第十届蓝桥杯省赛总结

时间:2024-05-23 08:31:33

第十届蓝桥杯是在郑州的河南农大龙子湖校区举办的,这是我第一次参加蓝桥杯比赛,前一天晚上在酒店住的,因为自己也不知道自己成绩能如何,所以也就一直睡不着;第二天早上九点开始比赛的,比赛时长为4个小时,下午一点结束,我们那个场,是早开始了五分钟,老师还不给我们解压密码...这也是造成我有遗憾的一个重大因素吧...蓝桥杯的坑真多啊...能跳的坑,没有一个漏的(无语)

成绩出来以后,心情有点复杂哈哈哈,因为我拿了省一,而且我根本不知道自己为啥拿了省一,然后还拿到了国赛的参赛资格,真幸运呐哈哈哈,开心

不过说实话,人家农大的校园还是挺有 feel 的,有点英国范,各种建筑也比较好看,毕竟是在郑州的学校,竞争力也比较大嘛;我们前一天晚上老师是没怎么管的,就是说让自己去吃饭,别乱跑就行,我感觉这样放松一点,反而更有利于比赛,因为比赛前还在看模板,还在记东西的话,是不是有点太过紧张了?那比赛状态不好的话,我感觉是成绩不会太好的。所以出去逛了逛,放了个松回来,回酒店才能好好睡觉,好好休息嘛(偷笑)...

下面来介绍一下蓝桥杯吧:

 

先来看看蓝桥杯的比赛题型:

 1. 结果填空题

  •  题目描述一个具有确定解的问题。要求选手对问题的解填空。
  •  不要求解题过程,不限制解题手段(可以使用任何开发语言或工具,甚至是手工计算),只要求填写最终的结果。

2. 代码填空题

  • 题目描述一个具有确定解的问题。
  • 题目同时给出该问题的某一解法的代码,但代码有缺失部分。

要求选手读懂代码逻辑,对其中的空缺部分补充代码,使整段代码完整。只填写空缺部分,不要填写完整句子。不要写注释、说明或其它题目中未要求的内容。所填代码应该具有通用性,不能只对题面中给出的特殊示例有效。


3. 编程大题

  • 题目为若干具有一定难度梯度、分值不等的编程题目。
  • 这些题目的要求明确、答案客观。

题目一般要用到标准输入和输出。要求选手通过编程,对给定的标准输入求解,并通过标准输出,按题目要求的格式输出解。题目一般会给出示例数据。
一般题目的难度主要集中于对算法的设计和逻辑的组织上。理论上,选手不可能通过猜测或其它非编程的手段获得问题的解。
选手给出的解法应具有普遍性,不能只适用于题目的示例数据(当然,至少应该适用于题目的示例数据)。
为了测试选手给出解法的性能,评分时用的测试用例可能包含大数据量的压力测试用例,选手选择算法时要尽可能考虑可行性和效率问题。

 

然后整理一下思路:

        首先,第一部分是填空题,我们只需要给出结果,只需要将答案填入空里面,不需要步骤,也不需要任何过程,所以我们不管使用什么办法,只要能把题解出来,用 Excel 啊,Word 啊, 或者画图啊,怎样都行,只要你最后答案是对的,你就能得分。所以就像第一题啊,直接用眼看就能解出来这种题,或者写个简单的代码就能解出来;

        其次,代码填空题的话,我们好像没有遇到,应该是在国赛里面才会出现的吧,这里就不多做解释了;

        最后,就是编程大题,这些题就比较考验逻辑思维跟编程能力了,你需要自行敲出代码,然后编译通过测试样例以后,进行提交,蓝桥杯的机制是这样的,它并不像别的比赛一样,比完赛就知道自己的成绩如何,它的规则是,你做出来以后,可以自行测试,你自己可以在编译器上面测试自己的代码,可以自己去想一些特殊的,极端的数据,来考验自己的代码,然后测试完了以后,可以进行提交,而且它是那种 “ 你尽管提交,我不给你成绩 ” 哎,你说气不气,提交了以后,你并不知道自己能过多少数据,并没有反馈,所以你只能靠自己测试,而且你尽管有时候能过了测试样例,还是有可能连思路都不对,因为不同代码,计算出来的结果可能是相同的嘛,所以考完心里面还是比较没谱的...

比赛完之后,不出意料,还是一大堆人啊啊啊啊啊你一句我一句争论,我跟我师傅就看着他们争,看着他们吵,因为就算你再吵,也改变不了结果啊,已经提交过了,带着轻松的心情回去不就好了,是吧,我跟我师傅很淡定地就上车了....

 

得到的教训:

  • 说到教训,首先要说的, 就是一定要测试代码,因为大家其实蓝桥杯考的分数并不是太高,做的题的数量不重要,保证对才行,因为就算你做了十道题,你做的都只能过一组数据,那不分数还是不高嘛,所以说,自己需要想一些数据来测试一下,或者偏难一点的数据,或者偏极端的数据都行,测试一下是不是代码跟自己思路是一样的,是不是极端一点的数据也能过,测试完了以后,感觉可以了,就去做下一道题;
  • 然后呢,就是做题的时候,一定要小心,蓝桥杯的题,有很多坑,看题看不清的话,很容易理解错题意,或者跳坑,也就是有一些点自己没有注意到,这样的话,就达到了出题人的目的啦...做题的目的,就是得分,而不是仅仅为了把题做完,所以说,题目一定要先看清楚,这样的话,才有可能会做对;
  • 其次,做题不要慌,因为时间是够的,所以只要确定自己做的题都对,这就够了
  • 还有,不管做题的时候心情如何,都不能把这一道题带给你的情绪,留到下一道题,你看,不管咱做的如何,心态一定要好嘛,大不了就当出来玩了一圈嘛...(安抚自己的小情绪)

 

介绍的也差不多了,来看看题目吧:

 

                                                          试题 A: 组队

作为篮球队教练,你需要从以下名单中选出 1 号位至 5 号位各一名球员,组成球队的首发阵容。

每位球员担任 1 号位至 5 号位时的评分如下表所示。请你计算首发阵容 1号位至 5 号位的评分之和最大可能是多少?

2019第十届蓝桥杯省赛总结

解题分析:

第一题还是很简单的,直接口算,一个队员只能用一次

1号位:1号   97
2号位:10号  99
3号位:17号  99
4号位:15号  97
5号位:12号  98

99 + 99 + 97 + 97 + 98 = 490

答案:490

                                                    试题 B: 年号字串

小明用字母 A 对应数字 1B 对应 2,以此类推,用 Z 对应 26。对于 27以上的数字,小明用两位或更长位的字符串来对应,例如 AA 对应 27AB 对应 28AZ 对应 52LQ 对应 329。请问 2019 对应的字符串是什么?

解题分析:

哇,这道题真的是太亏了,我没仔细看,大眼一观就按二十六进制口算了...然后结果不对,其实不能按二十六进制算的,因为它的A代表的不是0,而是1,所以只能一个一个算,然后递归求解。

#include <iostream>
#include <cstdio>
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

                                                      试题 C: 数列求值

给定数列 1, 1, 1, 3, 5, 9, 17, ,从第 4 项开始,每项都是前 3 项的和。求

 20190324 项的最后 4 位数字。

解题分析:

这道题...应该算是最友好的题了,没有任何坑,一眼看出对10000取余直接敲出来就行。

#include <iostream>
#include <cstdio>
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;
}

 

 

 

先这样吧,有时间了再写...