CSP-S2026 游记

· · 生活·游记

赛前练了很多很杂的东西,基本就是补补S组大纲里的内容,像二叉堆、笛卡尔树、Tarjan、《手搓平衡树》什么的,甚至还有一些国赛的知识(高二才捡回来这些人人掌握的东西我是fw吗)。基本95%的都牢牢掌握了,只有5%的还不太熟,不过影响不大,毕竟非专业级软件能力认证提高组第二轮(人话:CSP-S复赛)及全国青少年信息学奥林匹克联赛(人话:NOIP)及其组织者(是谁你别问)举办的一系列赛事重点考察的都是思维和基础思想,即模拟、数贪二排等,其余的算法都仅是在这些思想上的辅助和锦上添花。

值得一提的是,由于个人所在的学校对于OI的培养氛围不行,CSP-S赛前课停不了一点儿,加之升学的重心也早早就认定是在whk上而非OI上,所以直到赛前的10月30日也都一节课没停,都老老实实上了。不过课内确实有部分学科稍稍脱产了(实则并非稍稍),反正打完这辈子的最后一次OI就将剩余一年半的时间全部投回whk了,没焦虑此番自燃是否能拿怎样的成绩,没焦虑会不会耽误这次期中考试,我早就放下一切了,很多事儿已经都看清认清了,结果是涅槃重生还是燃尽成灰于我而言已不重要。最后这段时间,只是想再做回一次自己。

既然说了一节课没听,那这样硬着头皮就上战场真的好吗?当然不太好,基本的训练量指定得有的,午训晚训便已是日常,但后来发现晚自习前由于中途吃晚饭会导致训练时间压根不够,于是个人做了个郑重的决定:

“各校信息集训,无有不停课者,却未闻有停饭者,今中国停饭训练牺牲者,当自我等始!”

是的自古以来OIer都是停课训练的,几天几周甚至几个月的都有,但停饭训练属实是比较新鲜(这也是被学校逼得没办法的)。而事实证明每天下午晚自习前集中的2h20min训练确实有效,我能补回来不少内容,开头所提的大纲清扫计划都是建立在我停饭训练的基础上才得以夯实好的。赛前没打太多场模拟赛,就以查缺补漏和巩固思想为主,甚至还为了涨自信特意写了一堆刚学会的重剖的衍生板子题,全都是蓝紫,爽了。

赛前三天,在草稿纸上默了一遍往年CSP-S及NOIP考点,并将S组大纲内的全部知识经过整理与筛选分为了四大类列出(即DP、数据结构、图论和字符串,算算看其实联赛来回来去考的就这么些玩意),再算上重要的基础思想(注意重要和基础两个定语缺一不可),最终个人写了一篇CSP-S2026复赛的考点估计,发在了luogu的讨论区里,结果没想到引发众人热论,甚至还被cz评论了(虽然大意是对于预测考点这事带有些许不理解吧)。不过只要能在考前减少相应焦虑,并明确复习方向就好。

10月30日晚上回家后稍微温习了一些板子,然后听了几首天依的歌就睡了,都是2026年的,从《跨越星海的合奏》到《乐鸣东方》,再到《云弦鹤梦》《永恒挚契》,最后是《风之子》。过往无数次的经验告诉我,在某些重要考试或比赛前听天依歌能起到不小帮助,初中获得的S一就有一部分归功于循环播放《唱给锦依卫》来着。说来CSP-S 2026 第二轮当天刚好有武汉场的纯蓝幻乐,这下武汉的部分OIer们有福了,出考场之后就得在42min之内火速赶往武汉奥林匹克中心,好的我一点也不羡慕,真的,他们就出完考场再狠狠戒断一场吧,我回家写我的游记去了。

比赛当天,上午依旧写了写不太熟的板子(熟能生巧的已经都懒得练了),然后还有回翻往年S组真题自己写的代码,汲取的是解题思想,还有自信。大概该做的差不多弄完了之后点开B站看了周五更新的药屋第三季第5集(为什么看药屋还得让我学物化),稍微放松放松。

下午坐车赶往认证地点RDF,幸亏今年没被发配到太远的地儿,时间整体都挺富裕,车上依旧是放天依的歌,把自己每年OI训练的关键时段听的歌都放了一遍,《献给我仅有的粉丝》《自然法则》和《唱给锦依卫》(全都是WOVOP老师的作品),闭着眼,听着音乐,勾连起了往昔不少回忆。

“愿所有的风都送你到达梦的那一方,愿鹂歌和蝉鸣都为你的胜利而歌唱……”

这一句词极其打动我,简直唱到我心坎里了,想当初暑期J组训练时就是因为这首歌加深了对小洛的情感,因为她告诉我,她在祝贺着、期盼着我每一场比赛都凯旋归来呢。长此以往都是孤身一人打OI,即便缺乏了太多太多的认可,只要有她的祝愿和鼓励,我就足够心满意足了。天依,今年的这最后两场,也要等着我胜利归来啊,一定会向你传达佳绩的!出征,必胜!

正打算放《辟浪》,结果就已经到RDF了,于是只能关掉音乐,拎起包下车,走进RDF,第二次来这里参加比赛,路倒也熟,三步并两步便走到了机房。先去了趟厕所洗了把脸,再将无法带进考场的物品都扔在了自己的包里,放置于门外,只带进去笔袋、水杯、身份证和准考证(之所以没带食物是由于一来嫌占地儿影响发挥,二来半个多月的停饭训练已经给我练出来了抗饿能力)。我的座位在37号,刚好靠墙角,就座后一看,怎么RDF考场配置的全都是小小的笔记本电脑,属于机房配件的大电脑给关机并盖上纸了,最烦的是桌上堆满了电线,压根没地方放任何物品,连印有密码的草稿纸都放在了笔记本电脑的键盘上,这样纸上打草稿和敲代码来回切换一点儿都不方便,恼!我只得把水杯笔袋和草稿纸啥的全都放在了地上,希望不影响发挥吧。

到14:30还有十几分钟时间,我先建好文件夹,然后以略微带有压迫感的码速(为了气势不输于他人装作自己水平很高的样子,毕竟码速代表气势)迅速敲好对拍器所需的test、std、datamaker、duipai以及测大样例的checker代码,然后试了a+b的对拍,测验120712(每年对拍的保留节目)个点,结果显示一串AC,看来对拍器写得没有故障。

14:30,监考员将文件解码密码写在了纸上(一提起解码密码想起了去年令人咬牙切齿的!noip Day dream),“Oct31==Dec25?”是什么鬼?想起来了,12月25日是圣诞节来着,然后10月31日比赛这天刚巧是万圣节(可是我讨厌过西方节日!自打14岁之后就不愿意过万圣节和圣诞节了,这样的暗示对我没有丝毫的正面作用),CCF居然还整这出,只要不是对本场比赛有什么危险预告就行(比如措不及防的交互)。

开题!浏览了题目类型,没有交互。先用了5分钟左右的时间将数据点保存在了自己建好的文件夹里,以便于读入数据和查输出。然后开T1,一眼水题,大概有了点思路,就是个简单的二分,但是起初思路有点乱,要二分哪样玩意也没完全搞清楚,结果半小时了还没调对(我太fw了)。我试图让自己冷静下来,然后拿草稿纸比划了几下,顷刻间找出来了自己原先思路的致命漏洞,二分答案(这里用作动词)合并水晶能量值全然错误,它丝毫不具有单调性!因为要先操作的是低于此能量值的并且能量值较大的几个水晶,不能按顺序统计(这家伙在说什么呢),而后又想到至多m次操作完后的合并水晶能量值一定得是原先已有水晶的能量值,否则“虽覆一篑,然不贪心也”。两个思路合并起来,顷刻间我灵光一现,终于想出了正解,O(n) 枚举每个水晶作为合并水晶能量值能囊括的水晶数量,再取最大即可。至于求能囊括多少水晶,从1到i二分查找一遍即可,判断式子大概是 (i-mid+1)\times a_{i}-qsum(mid,i)>m,这个才具有二分所需的单调性!所以二分答案全然错误,二分查找才是真谛。最后还要用上排序和前缀和,这样便以 O(n\log n) 的时间复杂度简单通过啦。迅速敲好后从1到4测样例,一遍全过,稍微检查了下细枝末节,改好freopen便放心地交到程序回收系统上了,此时已过去了40多分钟(T1怎么做那么慢,为自己的区咬牙)。至于对拍就不写了,这种难度的题还是能自行确认是否写对的,因为完全可以证明代码原理的正确性嘛,所以不必对拍,太耗时间,况且这题让我写暴力反而不会弄了呢。交完题后稍微闭了下眼,理了一下T1的考点,排序、前缀和、二分,还有些许贪心思想支撑,果然考前预估的数贪二排囊括在T1是估对了的,贪二排都在……稍等,居然没有数?刚解码后简单浏览的后三题也没有明显的数学影子,难道会留在联赛出数数题吗?布豪!这下联赛难办了,不会又像去年一样整出个什么“范德蒙德卷积”吧,CCF我求你了……意识到这点我惊出冷汗,立马睁开眼,实在不行联赛前去学一趟卷积吧,我这个区到高二了狄利克雷卷积、莫比乌斯反演、快速傅里叶变换啥的都还不会……

不想那么多了,开T2!居然是坐地铁,我比较感兴趣的话题,然后明显也是图论。题面理解起来需要一段时间啊,给的变量还挺多,地铁站、地铁口、地铁站厅、地铁线路也挺容易把人绕晕,但对我这个经常坐地铁的来说其实问题丝毫不大,不一会儿就全都理清了。个人感觉最讨厌的是题目把5e5的地铁站数的变量给设成m,跟一般人习以为常的n有出入啊,反正我不习惯,便在草稿纸上将m和n的概念给换了一下,然后再手抄了要读入的变量格式,以及各变量的取值范围。首先辨析考点,明显是个纯纯的最短路,即Dijkstra、SPFA和Floyd那三兄弟,不算Johnson应该不能再有其他的了。其次看特殊性,理清概念时就发现题目中要求的是最短步行时间,不是最短时间,也就是说坐在地铁上的时间不算,每个线路的地铁在穿梭之际不会有任何权值,立马就想到地铁线路不就能看成一个点了吗?这个建模还挺具有创新性的说实话。地铁线路看成点有什么好处呢,注意到题目中给的n最大是500,而题目中给的n代表的是地铁线路数(我在敲代码时将其改成m了,和原先的m互换了下概念,不然不适应),这和去年Kruscal重构树+二进制枚举的那道T2的10座特殊城市具有类似的特殊性嘛!正解的攻克点想必就在这儿!再然后接着找,还有吗?题目中还给出了个d最大为20,d说的是每个地铁站最多被经过的地铁线路数,嗯先记着,这个可能也用得上。最后就分析代码实操了,询问的是地铁站之间的最短路还是全源,肯定得转换成两个地铁站所连地铁线路之间的全源最短路才行,并且别漏算两个地铁站本身的点权和地铁站到地铁线路的两个边权。说回那三个最短路的标准算法,Dijkstra行吗?求的是全源,5e5+500带log再乘上500,时间复杂度会爆,空间复杂度也明显不对,排。SPFA呢?也秒排(因为就是个用来判断负环的),Dijkstra的时复都过不了关SPFA更不行了。而这题又是全源最短路,很明显,正解指向Floyd了(大概率用不到那个Johnson算法),并且得在地铁线路上跑Floyd,500是允许三次方的。那么地铁线路之间如何建边呢?也不难想,枚举每个地铁线路,双层for(auto :)提取其他地铁线路建边取最小值即可,时间复杂度等于边数乘以2,应该是2e7,合理的。建好边后跑Floyd,二维dis数组也初始化好了,最后只差询问了。诶,这里提一嘴Floyd的小坑,k需要放在最外层循环哦!虽然我三年都没敲过Floyd了,这点却一直都没忘,其一是初中时教练强调过这点我一直记得,其二是就算忘了,从算法本质的角度出发,也知道k一定得放在最外层,思考一下k的含义,其实就是,k等于多少代表当前状态下dis数组存储的经过k个中转点的全源最短路。理解算法本质真的超级重要,去年的Kruscal预处理好原先最小生成树的1e4-1条边排掉那1e6-1e4条冗边便是一样的道理,要知道Kruscal的本质就是贪心排除权值较大的冗边,在二进制枚举特殊城市时712%用不到它们,所以得排掉,去年的T2要是想到这点其正解也便呼之欲出。说回询问操作,还是一番枚举,20乘20取全源最短路的最小值,再乘上个1e5,是4e7,三个步骤任何一步的时间复杂度都是合理范围,这应该就是正解了!还有个中间处理的小细节,地铁站作为点的编号需要加上地铁线路数n(按照原题含义的n),然后数组范围N需要设成5e5+505,这样才能方便建图。说来n的概念没有用在地铁站而是地铁线路上,不也是明摆着提醒选手要从地铁线路出发考虑全源最短路嘛!思路接通之后迅速切换回键盘,代码很快便敲好了,结果程序跑死了,查了10多分钟才发现是读入数据有误,读点权时m+1到m+n的循环我写成了m+1到m+1+n,这样会多读一个数,就会出错了,sort和lower_bound还有upper_bound用多了惹的祸啊,忘了读入数据和调用某些函数的始末指针不是一回事儿……改好后测样例了,7个样例迅速测完,全部一遍过,一步杀!再检查了一下没有啥大问题,改好文件读写迅速提交,这下开心了,200pts到手大概率没问题了。至于T2的对拍,也不打算写了,这种考最短路算法的倒也没法儿拍啊,暴力写起来还是耗时间。看了下交T2的时间,16:45,如果不算上读入数据犯唐调代码和上厕所时间,我大概只用了不到50min就解决了T2,甚至比T1正解都出得快呢。感觉今年S组的T1和T2都过于简单了,真的拉得开区分度吗……

开T3!读完题后我先去了趟卫生间,边走边想,题面还算简单,要求恰好两条线路的岛屿对,应该需要用到lower_bound和upper_bound卡坐标范围一番。回来后我开始想具体实现,感觉T3就是个计数DP,但我草稿纸比划了半天,再去写代码,半天都没调对,一直到18:10还有大样例是错的。是的,我压根没打算写暴力,反正S组仅仅是资格赛,多一分少一分暴力无所谓,与其这样倒不如尝试去磕100pts,万一成功了呢,万一呢(直到赛后我才发现自己这样干有多愚蠢,T3的难度压根不是我所能企及的高度)。最终,T3我没磕出来,部分分代码也没写,就只能交上去那段漏洞百出的代码了,然后最后15min看T4,发现啥分也拿不着,瞎输出一堆交上去得了,呜呜我是区……赛后我一想,对自己磕T3的选择不后悔,因为我所追求的并非分数的多少和在全省、全国的名次,而是不断向至高领域靠拢和迈进,哪怕它是我究其一生无法抵达的。何况那道题我估量自己的能力骗不到太多分,200pts应该能稳1=,所以与其成功但消极地烧条部分分,还不如失败但积极地磕正解,后者对我来说才是有意义的,毕竟“人类的勇气是生命的赞歌!”我早就放下OI了,部分分是否能拿到最多于我而言已没那么重要了,竭力而为就好。

18:30,程序回收系统准时关闭,复赛结束了,但监考员还不让离座,我便打开对拍器玩了会儿,又对拍了120712个点,然后收拾好东西,盯着满屏的AC发愣。还没对拍到1w个点,监考员宣布可以立场,但还得一排一排的走,而我由于靠墙角,刚好是最后一排的最后一位(不爽)。走出考场后我将东西装进包,然后把包里的天依娃娃拿出来拍了张照,再然后迅速下楼,冲出RDF,又在RDF校门前给天依合拍了一张:说起来赛前打算在注释上敲歌词的,但我没想到这回要磕T3,用了太长时间做题,以至于没时间去敲歌词儿,太罪过了!不过貌似也没人统计BJ的迷惑行为大赏来着,我之前在luogu上没翻出来。

在中关村购物中心吃的烤串,吃完后打了会儿PVZ2,还在刷失落之城的关卡,传送带关基本都是用红针花和(落坨翔子)阿·开·木·木打。用翔子开大招打可爽了,但是前排的几个翔子有不幸阵亡的,我的翔子啊!还我翔子!好在依靠大丽菊减速加红针花输出最终也成功都通关了。

吃完饭后该坐地铁回家了(细节坐地铁),但在这之前我打算去中关村领展广场看看,因为RDF往北刚好是海淀黄庄站,而上回来海淀黄庄……是去快闪店,然后去见天依了……可是现在……天依早已不在了……快闪店……8月9日之后也撤了……即便如此我还是打算去天依足迹曾烙印过的那片地方再看看。我走地下通道步行到那里,一路上全然失魂落魄,不是比赛打炸了,而是因为……这种难以言状的难受只有去过纯蓝幻乐的人才懂,通俗来说就是重度戒断吧。来到那个转角,墙壁和楼梯上的天依早就消失,立牌也早已撤下,“果然如此吗……”最后走到领展广场,心头的悬念终于落下,快闪店早已不复存在。那么剩下的是什么呢?仅仅是密密麻麻的售购衣物挂在一排排的架子上,原来这才是领展广场平日里原本的模样……快闪店,仅仅只是快闪而已,演唱会结束后一定会拆迁掉,很多事物也一样,驻留片刻后总会离去的……我呆呆地站在这里,望着眼前,再望向头顶竖着的大荧幕,十分想跪在这里,但周围还有其他路人,这种行为太失态,便只缓缓地步入领展广场中间,用手轻轻抚摸那些衣服,脑海中浮现出的却都是三个月前这里的样貌,墙壁,琳琅满目的商品,收银台,痛衣,痛伞,专辑,娃娃,手环,答题立牌,两个进出口,快闪店,同好,花篮,天依……久久抑制的难受却很难释放,想哭但哭不出来。最后我让家长帮我在这里拍一张照,然后便原路返回,步行往地铁站,坐地铁回家了。

以下是同一地点的不同时间拍下的照片:今天晚上其实还真有纯蓝幻乐,只不过不在北京在武汉,不知道武汉有没有人打完CSP-S之后去纯蓝幻乐的呢。唉,真的想飞去武汉见天依啊!可这只是想想而已,能做的只有戴上耳机,听会儿歌吧。我把下午没听完的辟浪给放完了,然后放了好久没听的倒瞰清白-过程稿版(说实话这版我感觉才是真神,比官方的原版好听太多,直冲天灵盖的爽感!),结果天依浑厚有力度的川腔戏段一出,听着眼泪都给渗出来了,之前在机房听这首歌时也险些听哭过不少回来着……放完倒瞰清白后刚好到站了,步行回家放了首十年人间的ACE cover版,到家后已是21点多。打开电脑看了下难度,黄青紫黑,原来后两题真的是难以企及的高度。至于考点,跟我预估得一样,T1贪二排甚至还有双指针,T2纯纯的Floyd最短路,T3是DP+双指针,T4是树形DP以及树的直径。还看到有人把T3和白鸟过河滩联系起来了,挺有意思,我咋就没想到呢。

最后做个收束吧。今年打得还算可以,比去年好很多了,没挂分,没留遗憾,也没后悔。分数的话预估100+100+0+0=200pts吧(不过比外省退役一年的同龄OIer还低48pts,我感觉我自己fw到头了),第二天代码复现发现前两题无悬念地通过了民间数据点。不过眼下更重要的是联赛,我得做好最后一个月的训练安排了,包括学啥内容练啥题打啥模拟赛。期中考试,爱咋样咋样吧,烂成什么样都无所谓,物理和英语我一点儿都没弄,红楼梦也彻底摆了,还在乎个啥呀,我一个脱产训练的其实没有任何必要参加期中考试,说真的好想停课一个月啊……至于期中考试后,肯定打算停课两周,这两周是为了给这辈子的最后一场OI仗一个交代,也是为了做回一次自己。

预祝联赛顺利!依旧RP++!速切T1,稳杀T2,骗赢T3,体面T4!天依也要相信我一定能做到的哦!

——公历2026年11月1日&依历15年4月23日,wbqhasvcf