第十届蓝桥杯是在郑州的河南农大龙子湖校区举办的,这是我第一次参加蓝桥杯比赛,前一天晚上在酒店住的,因为自己也不知道自己成绩能如何,所以也就一直睡不着;第二天早上九点开始比赛的,比赛时长为4个小时,下午一点结束,我们那个场,是早开始了五分钟,老师还不给我们解压密码...这也是造成我有遗憾的一个重大因素吧...蓝桥杯的坑真多啊...能跳的坑,没有一个漏的(无语)
成绩出来以后,心情有点复杂哈哈哈,因为我拿了省一,而且我根本不知道自己为啥拿了省一,然后还拿到了国赛的参赛资格,真幸运呐哈哈哈,开心
不过说实话,人家农大的校园还是挺有 feel 的,有点英国范,各种建筑也比较好看,毕竟是在郑州的学校,竞争力也比较大嘛;我们前一天晚上老师是没怎么管的,就是说让自己去吃饭,别乱跑就行,我感觉这样放松一点,反而更有利于比赛,因为比赛前还在看模板,还在记东西的话,是不是有点太过紧张了?那比赛状态不好的话,我感觉是成绩不会太好的。所以出去逛了逛,放了个松回来,回酒店才能好好睡觉,好好休息嘛(偷笑)...
下面来介绍一下蓝桥杯吧:
先来看看蓝桥杯的比赛题型:
1. 结果填空题
2. 代码填空题
要求选手读懂代码逻辑,对其中的空缺部分补充代码,使整段代码完整。只填写空缺部分,不要填写完整句子。不要写注释、说明或其它题目中未要求的内容。所填代码应该具有通用性,不能只对题面中给出的特殊示例有效。
3. 编程大题
题目一般要用到标准输入和输出。要求选手通过编程,对给定的标准输入求解,并通过标准输出,按题目要求的格式输出解。题目一般会给出示例数据。
一般题目的难度主要集中于对算法的设计和逻辑的组织上。理论上,选手不可能通过猜测或其它非编程的手段获得问题的解。
选手给出的解法应具有普遍性,不能只适用于题目的示例数据(当然,至少应该适用于题目的示例数据)。
为了测试选手给出解法的性能,评分时用的测试用例可能包含大数据量的压力测试用例,选手选择算法时要尽可能考虑可行性和效率问题。
然后整理一下思路:
首先,第一部分是填空题,我们只需要给出结果,只需要将答案填入空里面,不需要步骤,也不需要任何过程,所以我们不管使用什么办法,只要能把题解出来,用 Excel 啊,Word 啊, 或者画图啊,怎样都行,只要你最后答案是对的,你就能得分。所以就像第一题啊,直接用眼看就能解出来这种题,或者写个简单的代码就能解出来;
其次,代码填空题的话,我们好像没有遇到,应该是在国赛里面才会出现的吧,这里就不多做解释了;
最后,就是编程大题,这些题就比较考验逻辑思维跟编程能力了,你需要自行敲出代码,然后编译通过测试样例以后,进行提交,蓝桥杯的机制是这样的,它并不像别的比赛一样,比完赛就知道自己的成绩如何,它的规则是,你做出来以后,可以自行测试,你自己可以在编译器上面测试自己的代码,可以自己去想一些特殊的,极端的数据,来考验自己的代码,然后测试完了以后,可以进行提交,而且它是那种 “ 你尽管提交,我不给你成绩 ” 哎,你说气不气,提交了以后,你并不知道自己能过多少数据,并没有反馈,所以你只能靠自己测试,而且你尽管有时候能过了测试样例,还是有可能连思路都不对,因为不同代码,计算出来的结果可能是相同的嘛,所以考完心里面还是比较没谱的...
比赛完之后,不出意料,还是一大堆人啊啊啊啊啊你一句我一句争论,我跟我师傅就看着他们争,看着他们吵,因为就算你再吵,也改变不了结果啊,已经提交过了,带着轻松的心情回去不就好了,是吧,我跟我师傅很淡定地就上车了....
得到的教训:
介绍的也差不多了,来看看题目吧:
作为篮球队教练,你需要从以下名单中选出 1 号位至 5 号位各一名球员,组成球队的首发阵容。
每位球员担任 1 号位至 5 号位时的评分如下表所示。请你计算首发阵容 1号位至 5 号位的评分之和最大可能是多少?
解题分析:
第一题还是很简单的,直接口算,一个队员只能用一次
1号位:1号 97
2号位:10号 99
3号位:17号 99
4号位:15号 97
5号位:12号 98
99 + 99 + 97 + 97 + 98 = 490
答案:490
小明用字母 A 对应数字 1,B 对应 2,以此类推,用 Z 对应 26。对于 27以上的数字,小明用两位或更长位的字符串来对应,例如 AA 对应 27,AB 对应 28,AZ 对应 52,LQ 对应 329。请问 2019 对应的字符串是什么?
解题分析:
哇,这道题真的是太亏了,我没仔细看,大眼一观就按二十六进制口算了...然后结果不对,其实不能按二十六进制算的,因为它的A代表的不是0,而是1,所以只能一个一个算,然后递归求解。
#include
#include
using namespace std;
void dfs(int n)
{
if(n)
{
if(n >= 26)
{
dfs(n / 26);
}
printf("%c", 'A' + (n - 1) % 26);
}
}
int main()
{
int n;
cin >> n;
dfs(n);
return 0;
}
答案: BYQ
给定数列 1, 1, 1, 3, 5, 9, 17, …,从第 4 项开始,每项都是前 3 项的和。求
第 20190324 项的最后 4 位数字。
解题分析:
这道题...应该算是最友好的题了,没有任何坑,一眼看出对10000取余直接敲出来就行。
#include
#include
using namespace std;
int a[20191111];
int main()
{
a[1] = a[2] = a[3] = 1;
for(int i = 4; i < 20190325; i++)
a[i] = (a[i - 1] + a[i - 2] + a[i - 3]) % 10000;
cout << a[20190324] << endl;
return 0;
}
先这样吧,有时间了再写...