第十届蓝桥杯大赛个人赛省赛(软件类)B组

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;
}
发布了784 篇原创文章 · 获赞 19 · 访问量 6万+

猜你喜欢

转载自blog.csdn.net/ujn20161222/article/details/103952717