2025蓝桥杯C++A组游记

· · 生活·游记

前言

跟其他写游记的大佬不同,俺是个大一才开始接触算法竞赛的弱鸡,在去年的蓝桥杯因为填空题全错与省二失之交臂,拿着几乎没有任何含金量的省三遗憾离场。今年是我第二次参加蓝桥杯,我便给自己下了个目标,一定要拿到省一,去见见国赛选手的风采!(有点中二)

4.11晚

又补了几道22年C++A组省赛的题目,看到其中有一道题考了我不会的期望dp时直接开摆,听天由命吧,养精蓄锐(睡大觉)更重要。

4.12早

一如既往的考试后遗症,每次当要面临一次重要的比赛或者考试时,我刷牙时总是会反胃。按部就班地刷完牙洗完脸上完厕所吃完早餐,直赴考场。

赛前

经历了一个幽默小插曲,给我分配的座位的电脑居然没有鼠标(真是太“幸运”辣),于是我申请直接换位置,坐到了最后边。

赛时

开放下载试题的时间比9点早了半分多钟的样子(蓝桥杯官方你怎么搞的?),搞得我一开始手忙脚乱地,9点01时下好了试题,开始作答。

t1填空是个非常简单的搜索质数问题,也许是当时还没进状态,本来可以直接暴力枚举的我选择了更麻烦的线性筛做法,最搞的是线性筛第一次居然还写错了,好在我迅速发现了问题,等做完后差不多快9点10分了。

火速开t2,也是很简单搜索枚举的暴力问题,按照题目要求的格式来写,我这题也没花多久时间,大约在9点20左右就搞定了两道填空题(感觉还是有点慢了)。

做完两道填空后从前往后观察了下大题,惊讶地发现好像都并不是很难,按顺序从t3继续开题,t3也是很经典的模拟,没花太多时间。

继续开t4,t4看起来很麻烦,实际找到其节点颜色填涂的规律就很容易解决,也就是检查该节点所处编号的二进制数中为‘1’的位数个数之和,按照奇偶性划分颜色。仔细算时间复杂度应该是正确的,就嘎嘎写上去了。

做完t4后还不到10点,当时心里已经忍不住想振臂高呼“从未如此美妙的开局!”,但接下来的t5狠狠给我扇了一巴掌。在观察了一会儿题面之后才发现这是一道组合数问题,但好巧不巧,我并没有好好准备这方面相关的知识,所以在统计组合数的问题上便犯难了。

眼看t5没希望ac了,我把目光转向t6,好在t6没让我失望,虽然看起来是个比较复杂的字符串计数问题,但其实稍微转化下模型便可以将其当成一个线性dp问题来做,在经历了半小时的修修改改之后,我顺利地提交了这道题的代码。

现在已经交了5道题的代码,我开始心态放松地继续看t7。虽然也是很快理解了题意,但又又又好巧不巧,我忘了arctan的C++数学调用方法atan,导致这题的做法变得更加麻烦,于是在经历20min的苦思冥想之后,我无奈地暂时先放弃了这题,转头去看最后一题t8。

t8我很快就看明白了题目意思,但作为整场比赛里难度最高的一道题,我刚开始并没有什么好的思路,因为是n个点n条边,这个图并不是一棵树,导致我当时所想的树形dp思路不能直接拿来用,但是在考场上时,我“灵光一闪”,想到好像可以利用tarjan缩点来写(虽然赛后发现这个做法是错误的),说干就干,过了半个多小时,我成功写出了我想要的代码,

交完t8,此时还剩40多min,我还有t5,t7两道题没交,因为t5的暴力分高达40%的比例,比较诱人,所以我优先跑去开了t5,最后用暴力做法进行了组合数的统计。

等交完t5的暴力做法后,时间所剩无几,没时间继续做t7了,于是我在仔细检查了一些常见的格式问题,以及填空题答案的正确性后就交卷了(但就是忘了去检查自己开没开long long!)

赛后

当时考完出来,自以为自己在考场上成功AC了6题+完成了1题的暴力做法,自然是感觉省一十拿九稳了。但我在第二天就发了不对劲,t8的做法在我进一步思考后遗憾地发现这个思路是错的,同时也知晓了基环树dp这个东西,只能说知识面覆盖得还是不够多,同时又发现自己t6忘记了开long long导致可能会有一两个数据点爆int,这个失误又给自己这次的蓝桥杯之旅雪上加霜,再看到一些社交平台上,有很多人吐槽这次C++A组题目之水,甚至AK者不在少数,顿时感觉原本志在必得的省一又突然虚无缥缈了起来。在出成绩的前一两天期间我都非常忐忑不安。

尾声

好在最终rk70,侥幸擦边省一(福建省C++A组这次一共78个省一),感觉是自己要是一不小心多错个填空或者签到题就要后悔一年的程度。但总而言之,我还是非常荣幸且幸运地进入了本届蓝桥杯的决赛圈,希望后续能在国赛中再接再厉!再创佳绩!