无比艰难的一年赛事——CSP-S 2021游记

· · 生活·游记

更好的阅读体验?

9月18日 【CSP-S 初赛前一天】

因为疫情,FJ 取消了 CSP-J 考试,CSP-S 变成了线上考试。

还要用软件录屏,全程摄像头监控考试,最后提交录像。

在交代完许多乱七八糟的注意事项后,我们帮教练一起给机房的每台电脑之间架了挡板。

在初赛前期,我的成绩一直很不稳定,基本在 70 分上下徘徊。按照往年的经验,这个成绩是很悬的。我不免有几分担心。

到了最后一天,我也不想再过多复习了。把自己能做的做好,会的不丢分,不会的尽量拿分。能正常发挥,接下来就是看RP了。

这样想着,我离开了机房。

9月19日【CSP-S 初赛】

一大早就来到了学校,在隔壁的机房候场。

检查了一下双证,然后就是在跟同学们各种猜题,押题。

9:20入场,等到所有人都找到位置做好了,老师就让我们打开录屏软件,开始录屏。

我注意到提交系统是当时 NOI 的各种线上赛事都用的那个 NOIonline 提交系统。这个系统是会不定时登出账号的。这就意味着我必须留出至少 1015 分钟来重新登陆并提交。这让我又紧张了不少。

9:30,正式开考。

开局第一题就把我整懵了:

Linux 系统终端中用于列出当前目录下所含文件和子目录的命令?

国赛笔试才会考 Linux 系统吧?是我复习不到位了。

蒙了一个 ls,然后赶紧进入下一题。

好在后面的单选题都比较常规,在 10:00 顺利进入程序阅读题。

稍微看了看第一份代码,感觉都在搞一些奇怪的加加减减的运算,不知道在干什么。

直到我看到了这份代码对应的一道选择题:

好啊,开局一题计算几何!

我马上就看不下去了。这时,我想起一位大佬给我的忠告:当你看不来阅读程序题时,你可以先去做程序填空。

于是我跳过了剩下的两题阅读程序题,直接开了程序填空。

第一段代码感觉还行,但是选项挺有干扰性的,反复犹豫后终于填完了。

第二题一看是 RMQ 区间最值,本来以为它准备考我 ST 表,然后一看下面的描述,直接把我看傻了:

一个 ST 表能解决的事情为什么你要建笛卡尔树啊!这不是省选算法吗?

看得一脸懵,填空自然也是做得一脸懵。

基本就凭着直觉乱填,最后还是在 10:45 把程序填空搞定了。

还剩 \color{red}{45} 分钟,我却还要面对 3 道程序阅读,我又紧张了很多,手开始出汗了。

回到第一道阅读程序题。因为已经看过一遍代码了,再细看了看,每题的答案也基本定了。感觉还好,不是太难。

然后看到第二道题,貌似是用递归法和循环硬搞实现了两个一样的操作。

看了半天没有看出什么区别,就默认它们的结果是一样的了。乱糊了一下答案,就赶紧进入最后一道程序阅读题。

看到一个函数叫 \texttt{encode} ,一个函数叫 \texttt{decode} ,感觉是一个跟解密和加密字符串有关系的程序。

然而研究了一下加密机制,楞是没有算明白这个代码是怎么加密和解密的。

看了一下时间,只有 \color{red}{20} 分钟了,顾不上算那么多了。

于是这题最后又是凭直觉糊的答案,总算赶在最后 10 分钟左右把答案写好交上去了。

最后简单做了一些检查,确认自己在提交系统中输入的答案没错。11:30,初赛正式结束了。

机房貌似有个同学,因为系统自动登出了,没能成功把答案交上去,差点把电脑砸了。

考完出来稍微讨论了一下:Linux 系统的那题我貌似猜对答案了,第三题阅读程序的加密方法是 base64 加密。我就是在考场上认出来了我也不会算啊。

貌似考得都很惨淡,我也很慌。

离开考场时,我们只留下了一句话:

反正已经是高二人了,最后一次参赛,挂了就直接回去学文化课了。

毕竟,从2017年开始参加 OI 的我,到了现在,这些也看淡了。

可惜,还没回归几天文化课就被抓回来继续 OI 了。

9月X日【CSP-S 初赛后的某一天】

这次卷子确实是太阴间了。

又正好碰上疫情,弄得一堆人在家考试,折腾了半天。

好在我们最后挺过来了。

直到这天,我们接到通知:只要成功参加考试且全程没有作弊的,就可以晋级 CSP-S 复赛。

回想起那位提交失败的同学,这次他血赚。

于是,新的一轮停课集训,开始了。

10月22日【CSP-S 复赛前一天】

因为 CSP-J 被取消,原本 CSP-J 的考试时间变成了 CSP-S 的试机时间。

于是复赛前一天的时间被完全空出来了。

教练计划给我们整一场“信心赛”。

在早上,我们讨论了各种赛前的注意事项,以及一些常见的经典失误。按照往年的惯例,教练让我们每个人在黑板上写下我们能想到的经典失误。我写下了最常见的两个:多组测试数据没有清空变量,提交时调试语句没有删除。

这个上午就在我们的交流讨论中度过了。

下午,就是教练安排的”信心赛“,题目是一位学长出的。赛制与 CSP-S 一样,4 道题,4 小时。

先把四题大概翻了一遍,发现题面描述都很长,字又小,看得及其难受。

看了一下第一题,发现是数学找规律题。只看样例貌似看不出什么东西,先放着。

继续看第二题,是一题字符串处理题。仔细一琢磨,发现需要建有向图后判环。把输入的每个字符串哈希后拓扑排序就能搞定,但是码量略大。不是很想写,先看看第三题。

看了半天没有看懂第三题,此时过去了 20 分钟,我准备先写第二题。大概是写了一小时左右,把下发的样例都调过了。考虑到我还没有完全理解第三题的题意,我去看了第四题。

认真阅读后发现第四题实际就是一个子串的匹配问题。感觉貌似暴力能过,码量也不大。于是花了 30 分钟写完,因为一些细节调了十几分钟,最后把所有样例搞过了。

回过头来重新理解第三题。这题貌似跟图论最短路有关系。我随便糊出一个贪心做法,发现码量也不小。写了大概 1.2h,调了半天,总算是把样例过了。

最后来做第一题,发现自己剩的时间不多了。写暴力打表貌似写不完,于是我再糊了另一个贪心上去。在比赛结束前 \color{red}{5} 分钟写完了。

评测时一问发现其他人第一题规律都找对了,而我糊的贪心挂了,另外的第四题写暴力的复杂度算错了,当场自闭了。

好在我的第二题最后没有挂掉,于是我得到了 0+100+35+40=175 的烂成绩。

说好的信心赛,反而让我的信心丢了不少。

希望明天比赛时正常发挥,别再出什么差错了。

10月23日【CSP-S 复赛】

早上比试机时间提早了半小时就到了,跟教练签了到,就去机房外面候场。

然后不知道机房里面出了什么状况,说好的 9:00 开始试机,搞到了 10:30 才调好允许考生入场。

在候场时,把该复习的算法都翻了翻,然后去看大佬 Phigros 乱杀,总算是熬到了入场时间。

试机时就打了一下 A+B ,然后把快速读入和快速输出打了一遍,再随便写了点头文件,测试了一些 STL 模板能不能用,就回去了。

试机时总体没有出什么大问题,希望下午比赛时不要出现电脑死机之类的状况。

回去睡了一觉,到 13:30 醒过来,在家里检查了一下考试用具,就出门了。在 14:10 赶到了考场。

14:20,准时入场。找到自己的机子,一看,发现早上试机的代码还留在电脑上!当时就把我吓到了【不是说好了只有工作盘的文件不会还原吗】。赶紧举手让检考人员把文件都删了。

14:30,准时开题。按照我的个人习惯,我还是先花了 10min 左右把四题都看了一遍。

一遍看下来,第四题没有看懂,第一题先想到 O(n^2)40 暴力做法,但是 O(n \log(n)) 的正解看上去不难想。第二题没有任何思路,第三题会一个 40 分的折半搜索解法。斟酌了一下,决定想想第一题的正解。

认真观察了一会第一题中的样例解释,猛然发现,因为先到先得的规则,每个廊桥接纳的飞机是固定的那几架,可以排序后二分暴力预处理出来,之后 O(n) 枚举算出答案!算了一下,时间复杂度是对的,就赶紧开始写。

写道一半,突然考虑到二分时 不同的 a_i 可能会跳到相同的 b_i 的位置上。考场上一时半会没有想到什么好的维护办法,最后就简单粗暴地打了标记,然后一个一个暴力往后跳到没有被安排上的飞机。感觉好像会被卡,但是没有再细想。写了 1h 后测了一下,大样例直接一遍过了。感觉没有什么大问题,就开始搞别的题了。

本来想先写第二题的搜索,突然发现因为第二题的条件限制多,导致对于最后的答案的检验非常难写。为了求稳,我决定先写第三题的折半搜索。写得挺快,40min 就写完了。看了看下发的大样例,居然在这 40 分的暴力范围中,测了一下,也是一遍过,感觉没有什么大问题了。

这时我本来想先把代码在代码回收的网站上存一下,然后发现网站挂了,整个人傻了。这时检考突然说回收系统的服务器那边出锅了,然后机房里的全部的检考人员开始一个一个的帮忙重新登陆回收网站。还说在离考试结束的前1小时时还要再全体重新登录一遍。我借着他们在处理的时间,闭眼休息了几分钟,然后总算是把写好的代码存上了。

此时我感觉还有挺多时间。既然第二题一时半会写不动,不如认真来研究一下第四题?我拿出草稿纸,把第四题的图示说明抄了下来,认真研究第四题的样例和题面。

搞了大概 10min,想出一个很假的贪心做法,但是码量貌似极大。我花了大约 1h 10min 把这个假得不行的贪心实现了。只能过第一个样例,后面的样例全挂了。调了 10min,感觉调不动,自己心里也知道做法很假,就直接弃了。

最后剩了 1h 左右,在检考人员帮忙重新登陆了回收网站后,我开始硬着头皮写第二题的暴力。枚举答案很容易,检查答案不好写。我写好后,调了大约 20min 才调过第一个样例。结果拿第二个样例一测又挂了。我一看时间只剩 15min 不到了,被迫放弃了这题。

最后的时间,我检查了一下代码的输入输出文件名,把已经过了的样例全部重测了一遍。最后把交到代码回收网站上的代码全部复制下来,与本地的代码对比了一遍。做完这些,比赛正好结束了。

出来问了问,发现很多第一题做不出来只会写 40 分暴力的。爆零的也不在少数。

在学校门口等着回收结果,算了算自己的估分,大概是 100+0+40+0=140 ,感觉已经没救了。确认回收无误后就滚粗了。

回家后没什么心情搞文化课,看了一部电影,教练发的可乐都没有喝就睡了。

10月24日【CSP-S 复赛后第一天】

随便去洛谷估了一下分,发现自己的第一题写挂了,于是成绩变成了 65+0+40+0=105。好在没有挂太多分。

据说总体结果并不好。我找了一些同校的 OIer 问了问,居然只有几个人估分后总分达到 100 以上的,也许还有希望?

因为刚刚比赛回来,不是很想写文化课作业。这一天一半在划水,一半在与其它人讨论划线和估分,作业只随便糊了几份。

最后到了晚上,感觉自己今年还是大概率无缘 NOIP 了,还是好好滚回去学文化课准备期中考吧。

10月30日 【CSP-S 官方成绩放出】

\color{red} {75+0+40+0=115}

居然比洛谷估分高了,看来是 CCF 数据造水了。

查了一下发现自己是变量名写错了一个,改过来第一题马上满分了,当场自闭了。

但是,无论结果如何,这都已经不重要了。

因为,明天,就是另一场新的测试赛了......

【欲知后事如何,敬请期待 NOIP 2021 游记】

个人总结/后记

赛后写了大概三四个晚上,终于是把这篇游记写完了。

现在自我总结一下吧。

首先是数学和 DP 算法掌握得不够,导致在赛场上没能做出第二题。

其次是自己打暴力的能力略有欠缺,居然没能在最后一小时内打完一个能用的第二题的暴力算法,是锻炼不足了。

剩下的,我认为最大的问题,就是我没有留出时间再仔细的看一遍代码。如果有这个时间,也许就能把第一题的那个变量名错误查出来。

今年真的无比艰难,题目难度大,又碰上了疫情,首次体验了线上考初赛的操作。复赛的时候,回收系统又挂了,好在最后还是成功把代码收上去了。

真的可以说,这是无比艰难的一年啊!

再一看,距离退役的日子也不远了,很快就要抛下竞赛专注于文化课了。

每一场比赛,我都是抱着“挂了就退役去学文化课”的心态考下来的。但实际上,我真心不想在 NOIP 前就结束自己的信息竞赛的征程。

毕竟,我还没有拿到提高组的省一等奖啊!

无论如何,希望今年能给我五年的竞赛生涯画上一个圆满的句号吧。

那么,该接着准备 NOIP 了.......

【The end】