博客
关于我
蓝桥杯备战——刷题(2019)
阅读量:340 次
发布时间:2019-03-04

本文共 5569 字,大约阅读时间需要 18 分钟。

答案在最下方

A

在这里插入图片描述
在这里插入图片描述
这题是个简单的暴力,注意每一个编号只能选择一次,不能直接全选最大。直接枚举出20^5种可能,维护一个最大数出来即可。当然也可以直接拿眼看,因为数据范围非常小。

#include<bits/stdc++.h>using namespace std;int a[21],b[21],c[21],d[21],e[21];int main(){   	int ans,res=-1;	for(int i=1;i<=20;i++){   		for(int j=1;j<=20;j++){   			for(int k=1;k<=20;k++){   				for(int m=1;m<=20;m++){   					for(int n=1;n<=20;n++){   						if(i!=j&&j!=k&&k!=m&&m!=n){   							ans=a[i]+b[j]+c[k]+d[m]+e[n];							res=max(ans,res);						}					}				}			}		}	}	cout<<res;	return 0;}

B

在这里插入图片描述
这题我开始写的模拟,网上有很多思路比我简单,我开始想的是一位字母能代表26个,两位字母能代表702个,三位字母包含2019,我模拟出每一个i对应的字符串是什么,遇到Z就当前位重置为A,上一位加一,和加法的原理差不多,把十位变成了二十六位进制。

#include<bits/stdc++.h>using namespace std;int main(){   	string ans[2020];	for(int i=1;i<=26;i++){   		ans[i]='A'+i-1;		cout<<i<<" "<<ans[i]<<endl;	}	int cnt=0;	int temp=0;	for(int i=27;i<=702;i++){   		ans[i]='A'+cnt;		int tem=i;		ans[i]+='A'+tem-27-26*temp;		if(ans[i][1]=='Z'){   			cnt++;			temp++;		}		cout<<i<<" "<<ans[i]<<endl;	}	int cn=0;	cnt=0;	temp=0;	for(int i=703;i<=2019;i++){   		ans[i]='A'+cnt;		ans[i]+='A'+cn;		int tem=i;		ans[i]+='A'+tem-703-26*temp;		if(ans[i][1]=='Z'&&ans[i][2]=='Z'){   			cnt++;			temp++;			cn=0;			continue;		}		if(ans[i][2]=='Z'){   			cn++;			temp++;		}		cout<<i<<" "<<ans[i]<<endl;	}	return 0;} 

C

在这里插入图片描述

写个递推结束。
因为只要后四位,取模后四位的值就行。

#include<bits/stdc++.h>using namespace std;typedef long long ll;const int maxn=20190324;ll a[maxn];int main(){   	a[1]=1;	a[2]=1;	a[3]=1;	for(int i=4;i<=maxn;i++){   		a[i]=a[i-1]+a[i-2]+a[i-3];		a[i]%=10000;	}	cout<<a[maxn]%10000;	return 0;}

D

在这里插入图片描述
直接三个数暴力,唯一的坑点就是三个数排序之后要有本质不同,所以在循环的过程中直接让 i<j<t 就好,避免踩坑。做个累加和结束。

#include<bits/stdc++.h>using namespace std;typedef long long ll;int main(){   	ll ans=0;	for(int i=1;i<2019;i++){   		for(int j=i+1;j<2019;j++){   			int t=2019-i-j;			if(t<j) continue;			int f=1;			int a=i,b=j;			while(a){   				if(a%10==2||a%10==4){   					f=0;					break;				}				a/=10;			}			while(b){   				if(b%10==2||b%10==4){   					f=0;					break;				}				b/=10;			}			while(t){   				if(t%10==2||t%10==4){   					f=0;					break;				}				t/=10;			}			if(f) ans++;		}	}	cout<<ans;	return 0;}

E

在这里插入图片描述
先处理一下数据,给的txt文本是连在一起的,我直接读入了,我还纳闷咋读不进去,原来当成一个值了。

010101010010110010010101100101101001000010001010100000100010000010101001000010000000100110011010010101111011010010001000001101001011100011000000010000010000000010101000110100001010000010101010110010110001111100000010100001001010001010000010110000000011001000110101000010101100011010011010101011110111000110110101010010010010100000010001010011100000001010000010100010011010101011111001100001000011101000111000001010100001100010000001000101001100001001110001101000011100100010010101010101010100011010000001000010010000010100101010111010001010101000010111100100101001001000010000010101010100100100010100000000100000001010110011110100011000001010101000111010101001110000100001100001011001111011010000100010101010100001101010100101000010100000111011101001100000001011000100001011001011010010111000000001001010100100000001010010000100010000010001111010100100101001010101101001010100011010101101110000110101110010100001000011000000101001010000010001110000100000100011000011010110100000010010100100100001110110100101000101000000001110110010110101101010100001001010000100001101010100001000100010010001000101011010000100011001000100001010100101010101111101001000000100101000000110010100101001000001000000000010110100000010011101110010010000111010010110111010000000011010001000100010000000100001110100000011001110101000101000100010001111100010101001010000001000100000101001010010101100000001001010100010111010000011110000100001000000011011100000000100000000101110000001100111010111010001000110111010101101111000
#include<bits/stdc++.h>using namespace std;int main(){   	string s[50];	for(int i=0;i<30;i++){   			cin>>s[i];	}	for(int i=0;i<30;i++){   		for(int j=0;j<s[i].size();j++){   			cout<<s[i][j]<<" ";		}		cout<<endl;	}	return 0;} 

还有什么呢,dfs跑一遍记录中间位置就好了。
最后根据中间位置做判断,每两个坐标相减看上一次的操作是啥。
做麻烦了,毕竟填空题。

#include<bits/stdc++.h>using namespace std;typedef long long ll;const int maxn=55;int ans;int f=0;int dir[4][2]={   	{   -1,0},{   1,0},{   0,-1},{   0,1}	};struct node{   	int x,y;}path[maxn*maxn],now;int a[maxn][maxn];int vis[maxn][maxn];void output(){   	f=1;	string s;	int tx=0,ty=0;	for(int i=1;i<=ans;i++){   		//cout<<path[i].x<<" "<<path[i].y<<endl;		int px=path[i].x-tx;		int py=path[i].y-ty;		if(px==-1&&py==0) s+='U';		else if(px==1&&py==0) s+='D';		else if(px==0&&py==-1) s+='L';		else if(px==0&&py==1) s+='R';		tx=path[i].x;		ty=path[i].y;	}	cout<<s<<endl;	return ;}bool judge(int x,int y){   	if(x>=1&&y>=1&&x<=30&&y<=50&&vis[x][y]!=1&&a[x][y]!=1){   		return 1;	}	return 0;}void dfs(int x,int y,int step){   	if(x==30&&y==50){   		ans=step;		now.x=30;		now.y=50;		path[step]=now;		if(!f) output();		return ;	}	for(int i=0;i<4;i++){   		int xx=x+dir[i][0];		int yy=y+dir[i][1];		now.x=xx;		now.y=yy;		if(judge(xx,yy)){   			vis[xx][yy]=1;			path[step]=now;			dfs(xx,yy,step+1);			vis[xx][yy]=0;		}	}} int main(){   	memset(a,0,sizeof(a));	memset(vis,0,sizeof(vis));	for(int i=1;i<=30;i++){   		for(int j=1;j<=50;j++){   			cin>>a[i][j];		}		getchar();	}	dfs(1,1,0);	//cout<<ans;	return 0;}

A答案是:490
B答案是:BYQ
C答案是:4659
D答案是:40891
E答案是:DDRRURRRRRRDRRRUUURRDDDLDDDLDDLDLUULLDDDDDDDLDDLUUUUULULDDDDDDDDDDDDLDDLDDDDRRRRRURUUUUULUUUURURUURUURRRDDDDDDDLLULLDDRDDDRRUURRURDRRUUURRUUUUULUUUURRRUURURRDDDRRRDDDRDDLDLDDDDDDLDDLLLDLLULLDDDRRRRRURRRRRUUUUUURURDDDDDRRDDDRRRRUURUUUUUUUULLLUUUURRRRUUULDLLUUUULLUUULUULLUURRRRDDDRRUUURURRRDDRRRRRDDRRDDLLLDDRRDDLDLDDRRDDLLDDLLLDLDDDLDDDDDDDRRRUUUUURRRRRURDDDDDDDRR(不知道对不对,自己生成的,最近真的都是错误答案)

转载地址:http://phdr.baihongyu.com/

你可能感兴趣的文章
Python爬虫学习
查看>>
数据库系统概论:ER图设计
查看>>
AC自动机 - Word Puzzles - POJ - 1204
查看>>
DIJ - 昂贵的聘礼 - POJ 1062
查看>>
DIJ + Topsort + DFS - Roads and Planes G(道路与航线) - 洛谷 P3008
查看>>
Prim / Kruskal - 局域网 - 洛谷 P2820
查看>>
Tarjan(割点) - Electricity - POJ 2117
查看>>
线性筛 + 埃式筛 (筛区间质数) - Prime Distance - POJ 2689
查看>>
快速幂 - 序列的第k个数 - AcWing 1289
查看>>
计算几何(旁切圆) - Ex-circles - UVA 11731
查看>>
DP - Tickets - HDU - 1260
查看>>
图数据结构以及深度、广度遍历方式
查看>>
phpStudy for Linux (lnmp+lamp一键安装包)
查看>>
Session的load和get的区别,get方法影响效率
查看>>
【安卓学习笔记】JAVA基础Lesson9-对象的转型
查看>>
JS保留字和关键字
查看>>
本校暑假训练营11_Python数据分析入门7-网络1
查看>>
本校暑假训练营12_Python数据分析入门7-网络2
查看>>
网络安全学习篇50_第四阶段_SSRF
查看>>
数据库SQL实战3_获取所有非manager的员工emp_no
查看>>