2020.9.25--2020中国大学生程序设计大赛总结
1010.Reports
比赛做的一遍错误是遍历时超界了,用了俩for循环,其实用一个就行但当时没弄清楚就直接写了
题意:K每次进出学校都要进行上报,进校用“1”表示,出校为“0”,只有当两个连续的报告序列不同时报告才正确,否则错误。
#include<bits/stdc++.h> using namespace std; int main() { int t; cin>>t; while(t--) { int n,i,s[100]; cin>>n; for(i=0;i<n;i++) { cin>>s[i]; } int k=0; for(i=0;i<n-1;i++) { if(s[i]==s[i+1]) { k=1; cout<<"NO"<<endl; break; } } if(k==0)cout<<"YES"<<endl; } }
1003.Express Mail Taking
题意:除了传统的课程,小火山还需要学习如何接快递。
快件通常存放在橱柜里。在小火山的学校里,有n个橱柜排在一排,编号1到n。相邻两个柜子之间的距离为1,入口在柜子1处。在n个机柜中,编号为k的机柜是特殊的,用来输入代码,从而打开机柜门。小火山有m快递要取,第i个在柜子ai里。两封快件不会存放在同一个柜子里。而且也没有特快专递。
#include<bits/stdc++.h> #include<cstdio> using namespace std; 如:10 2 5 3 4 路线: 1-5 要走4 5-4 1 4-5 1 5-1 4 总长为10 若要先取3号快件为: 1-5 4 5-3 2 3-5 2 5-1 4 总长为12 int main() { int t; cin>>t; while(t--) { long long n,m,k,i,j; scanf("%lld%lld%lld",&n,&m,&k); long long s[m+5]; for(i=0;i<m;i++) { scanf("%lld",&s[i]); } sort(s,s+m);//从小到大排列 long long sum=0; for(i=m-1;i>=0;i--) { if(s[i]>k) { sum+=(s[i]-k)*2; } else { sum+=(k-s[i])*2;//此处多加了k与最小编号的快件的距离 } } if(s[0]<k) { sum+=(k-1)*2;//加上一开始从1到k的距离以及从k返回到1的距离 sum-=(k-s[0])*2;//当最小编号小于k时要减去k->ai及ai->k多加的距离 } else { sum+=(k-1)*2;//最小编号大于k时直接加上1->k及k->1的距离 } printf("%lld\n",sum); } }
1007.CCPC Training Class
思路:找出字符串s中出现次数最多的那个字母的次数;
#include<bits/stdc++.h> using namespace std; int main() { int t,j=1; cin>>t; while(t--) { string s; int i,m,b[1000]={0}; cin>>s; m=s.size(); int max=-1; for(i=0;i<m;i++) { b[s[i]-'a']++; if(b[s[i]-'a']>max)max=b[s[i]-'a']; } cout<<"Case #"<<j<<": "<<max<<endl; ++j; } }
总结:1.因为最近一直没做题,一开始在打代码的时候就有点乱,思路还没有理清就直接做,要么写出来的代码繁琐出错要么就打了一点代码就接不下去了。 这次的组队赛,在开始前我就开始紧张还有点慌一直到比赛一半,就怕自己拖后腿做不出题来,比赛开始后,先看了通过率最高的1010题,打完代码提交后页面也没有直接显示对了还是错了,还以为对了也没查,忙着看下一道,但过一会我的队友也做了这道题对了,那我的肯定错了就开始想自己哪错了,想不出来就会有些烦躁,但也没继续看这道题,还要和队友看下一道题1003,这道题我们一开始讨论的思考方向错了,按照原来思路打出来的代码虽然样例对的上但也没过,后来就是在纸上重新换了一种思路,都忽略了题意是每取一个快件就要回到第k个机柜处输入代码,然后就分情况做,对于第三道题1007,题目没看懂,但光看样例的话就猜是找字符串中出现次数最多的字母的次数,直接上代码就过了.
2. 对于这次比赛,这几个题看完题目思路是有但代码打出来就有些繁琐容易错,1010题就弄错了后来再看的时候发现遍历时超界了,还有就是打代码时还没理清大体步骤就打,思路就乱了,就会出现多余的没啥用的想法,导致代码会繁琐也容易出错,虽然都有思路但就是代码打的慢还不清晰。所以在做题时还是先理清思路了解了题意,再继续进行,还有就是在理解题意上想的简单化了忽略了一些细节问题,就像1003题一开始只想着距离忽略了要防止被偷需要一个一个取,和队友讨论后才意识到。还是要注意细节问题还有做题时得调整好心态,理清思路。还有就是有的题不能光看题目,有的题目直接看样例可能会更直接理解出题意,就像1007题。还有在纸上进行运算几步思路会更清晰,也可能会有更简单的方法可以解题。

浙公网安备 33010602011771号