http://dasai.lanqiao.cn/pages/dasai/news_detail_w.html?id=644
保留每一列的较大的几个数,然后直接计算
#include<bits/stdc++.h>
using namespace std;
int main(){
int k=26;
// int num=2019;
int num=27;
while(1){
if(num==0){
break;
}
else{
printf("%d\n",num%k);
num/=26;
}
}
puts("");
for(int i=0;i<26;i++){
printf("%c: %d\n",'A'+i,i);
}
return 0;
}
可以,对应一下,然后没有处理0的情况,下标减1
#include<bits/stdc++.h>
using namespace std;
int a,b,c,d;
#define M 10000
int main(){
a=1;
b=1;
c=1;
d=0;
int n=20190324;
int cnt=4;
for(int i=0;i<n;i++){
a=a%M;
b=b%M;
c=c%M;
d=(a+b+c)%M;
if (i%M==0){
printf("%d\n",i);
}
if(cnt==n) {
printf("%d: %d\n",cnt,d);
}
swap(a,b);
swap(b,c);
swap(c,d);
cnt++;
}
return 0;
}
#include<bits/stdc++.h>
using namespace std;
#define M 10000
bool check(int n){
while(1){
int a=n%10;
if(a==2||a==4){
return 1;
}
n/=10;
if(n==0){
return 0;
}
}
return 0;
}
int main(){
int n=2019;
int cnt=0;
for(int a=1;a<n;a++){
if(check(a)>0){
continue;
}else{
for(int b=a+1;b<n;b++){
if(check(b)>0){
continue;
}else{
int c=n-a-b;
if(c<b||check(c)==1||c==b){
continue;
}else{
// printf("%d %d %d\n",a,b,c);
cnt++;
}
}
}
}
}
printf("%d\n",cnt);
return 0;
}
1.数位有限制
2.三个数不相等(注意枚举第三个数时严格大于,相等情况)
#include<bits/stdc++.h>
using namespace std;
int n=30,m=50;
string mp[35];
bool vis[35][55];
int dir[4][2]={{1,0},{0,-1},{0,1},{-1,0}};
struct node{
int x,y,step;
string str;
node(int _x,int _y,int _step,string _str){
x=_x;
y=_y;
step=_step;
str=_str;
}
};
int main(){
freopen("maze.txt","r",stdin);
for(int i=0;i<n;i++){
cin>>mp[i];
}
string s="";
queue<node> q;
q.push(node(0,0,0,""));
vis[0][0]=1;
while(!q.empty()){
node now=q.front();
q.pop();
if(now.x==n-1&&now.y==m-1){
cout<<now.step<<endl;
cout<<now.str<<endl;
}
// printf("%d %d %d\n",now.step,now.x,now.y);
for(int i=0;i<4;i++){
int tx=now.x+dir[i][0];
int ty=now.y+dir[i][1];
if(tx<0||tx>=n||ty<0||ty>=m||vis[tx][ty]||mp[tx][ty]=='1'){
continue;
}
// puts("Fdshjklfkjds");
// printf("%d%d\n",tx,ty) ;
// printf("%c\n",mp[tx][ty]);
if(i==0){
s="D";
}else if (i==1){
s="L";
}else if (i==2){
s="R";
}else if (i==3){
s="U";
}
vis[tx][ty]=1;
q.push(node(tx,ty,now.step+1,now.str+s));
// printf("%d",i);
// cout<<s<<endl;
// break;
}
// break;
}
return 0;
}
简单bfs
注意https://blog.csdn.net/qq_40845417/article/details/88782633
这篇文章,上下方向反了
#include<bits/stdc++.h>
using namespace std;
bool check(int n){
while(n>0){
int a=n%10;
if(a==2||a==1||a==0||a==9){
return 1;
}else{
n/=10;
}
}
return 0;
}
clock_t t_start,t_end;
int main(){
int n;
freopen("in.txt","r",stdin);
t_start=clock();
scanf("%d",&n);
long long sum=0;
for(int i=1;i<=n;i++){
if(check(i)){
// printf("%d\n",i);
sum+=i;
}
}
cout<<sum<<endl;
t_end=clock();
printf("%lf\n",(double)(t_end-t_start)/CLOCKS_PER_SEC);
return 0;
}
直接算
#include<bits/stdc++.h>
using namespace std;
const int N=1e5+10;
clock_t t_start,t_end;
int a[N];
int main(){
int n;
freopen("in.txt","r",stdin);
t_start=clock();
scanf("%d",&n);
for(int i=0;i<N;i++){
scanf("%d",&a[i]);
}
int cnt=0;
long long msum=-1e18;
int dep=0;
// cout<<msum<<endl;
for(int i=1;i<n;i=i*2){
// printf("%d\n",i);
long long tsum=0;
for(int j=0;j<i;j++){
tsum+=a[cnt];
cnt++;
}
if(tsum>msum){
msum=tsum;
dep=i/2+1;
// cout<<msum<<" "<<dep<<endl;
}
}
printf("%d\n",dep);
t_end=clock();
printf("%lf\n",(double)(t_end-t_start)/CLOCKS_PER_SEC);
return 0;
}
#include<bits/stdc++.h>
using namespace std;
const int N=65535;
int a[N];
int main(){
freopen("in.txt","w",stdout);
printf("%d\n",N);
int a=-100000;
int b=100000;
srand(time(0));
for(int i=0;i<N;i++){
int c=(rand()%(b-a+1))+a;
printf("%d ",c);
}
return 0;
}
感觉有些人写的有问题,如果都是负数
注意等差为1的情况
求gcd
#include<bits/stdc++.h>
using namespace std;
const int N=1e5+10;
clock_t t_start,t_end;
int a[N];
int n;
bool check(int p){
for(int i=1;i<n;i++){
int k=a[i]-a[i-1];
if(k%p!=0){
return 1;
}
}
return 0;
}
int main(){
freopen("in.txt","r",stdin);
t_start=clock();
scanf("%d",&n);
for(int i=0;i<n;i++){
scanf("%d",&a[i]);
}
sort(a,a+n);
set<int> si;
si.insert(1);
for (int i=1;i<n;i++){
si.insert(a[i]-a[i-1]);
}
int pp=0;
for(auto it=si.rbegin();it!=si.rend();it++){
int p=*it;
if(check(p)==0){
pp=p;break;
}
}
printf("%d\n",pp);
// printf("%d %d\n",a[n-1],a[0]);
printf("%d\n",(a[n-1]-a[0])/pp+1);
t_end=clock();
printf("%lf\n",(double)(t_end-t_start)/CLOCKS_PER_SEC);
return 0;
}
#include<bits/stdc++.h>
using namespace std;
const int N=100000;
int a[N];
int main(){
freopen("in.txt","w",stdout);
printf("%d\n",N);
int a=0;
int b=1e9;
// printf("%d\n",b);
srand(time(0));
for(int i=0;i<N;i++){
int c=(rand()%(b-a+1))+a;
printf("%d ",c);
}
return 0;
}
#include<bits/stdc++.h>
using namespace std;
const int N=2e5+10;
clock_t t_start,t_end;
int a[N];
int main(){
freopen("in.txt","r",stdin);
t_start=clock();
int n,m;
scanf("%d%d",&n,&m);
for(int i=0;i<n+m+1;i++){
scanf("%d",&a[i]);
}
sort(a,a+n+m+1);
long long sum=0;
for(int i=0;i<m;i++){
sum-=a[i];
}
for(int i=m;i<m+n+1;i++){
sum+=a[i];
}
cout<<sum<<endl;
t_end=clock();
printf("%lf\n",(double)(t_end-t_start)/CLOCKS_PER_SEC);
return 0;
}
占坑,这个代码不对,可以更新多次
#include<bits/stdc++.h>
using namespace std;
const int N=3e5+10;
clock_t t_start,t_end;
int a[N];
int main(){
freopen("in.txt","r",stdin);
t_start=clock();
int z=0;scanf("%d",&z);
while(z--){
int n;
scanf("%d",&n);
multiset<int> si;
for(int i=0;i<n;i++){
scanf("%d",&a[i]);
si.insert(abs(a[i]));
}
int ans=*si.rbegin();
// printf("%d\n",*si.rbegin());
for(int i=1;i<n-1;i++){
si.erase(abs(a[i-1]));
si.erase(abs(a[i+1]));
si.insert(abs(a[i-1]+a[i]));
si.insert(abs(a[i+1]+a[i]));
ans=min(ans,*si.rbegin());
// printf("%d\n",*si.rbegin());
si.erase(abs(a[i-1]+a[i]));
si.erase(abs(a[i+1]+a[i]));
si.insert(abs(a[i-1]));
si.insert(abs(a[i+1]));
}
printf("%d\n",ans);
// printf("%d\n",*si.rbegin());
}
t_end=clock();
printf("%lf\n",(double)(t_end-t_start)/CLOCKS_PER_SEC);
return 0;
}