梦——2026 联合省选游记

· · 生活·游记

“时过境迁,小 B 回到了他梦寐以求,却又折戟沉沙的省选赛场。但他关于算法竞赛的记忆还有多少呢?其中又有多少最为珍贵的记忆值得去珍惜呢?小 B 是一个对算法竞赛充满热情,乐于探索的人。而对他来说,最珍贵的记忆便是学习算法时对其进行各种修改、实验,尝试得到一些新成果的日子吧。

小 B 想请你陪他一起,去找寻这些珍贵的记忆。”——《[省选联考 2026] 找寻者 / recollector》

Day 6

梦。

突然才发现充满忙碌的上半学期结束了,充满期待的寒假结束了,充满焦虑的省选结束了。好像一切都只是一个梦,只有结果,没有过程。

突然就到了下半学期。

写这篇游记,顺便当一个recollector,recall一下去年省选。(本文中以 斜体字 来表示去年省选的经历,以 普通字体 来表示今年省选的经历。)

本文使用 0-index。具体小时分钟数均为大约值。

Day -n

上文化课。

这次过年前一直以半OI半whk的状态在准备,但是说句实话,干正事少,摆烂多。也不知道为什么,仿佛时间还很充裕一般。

然后,初八开始急训,听wishapig大佬上了六天课,讲的全是蓝紫黑,但是都不太会做,上课有时候还困得要死。

后面学校返校也没去,寒假作业也没写,就是专心训练,但是实际上也没有多少天了。

本来以为报名没成功(一直在“信息审核”),结果前几天的时候教练告诉我可以参加,而且好像是正式的,导致也没时间停课了。

又差点没报上。

Day -3~Day -2

真的开始慌了。

看看各种模板都不怎么会写:一个Splay晾了一年重构还是TLE没过;二次离线莫队写了半天崩了;其他省选模板基本不会。南外的训练题基本没写。不过好歹知道了有这个算法,也大致会了一点。

结果就是什么都想干,然后发现这个来不及,那个也来不及,结果当时反倒什么也没干,题也没有做很多。

Linux用过几次以后也基本会用了。

当时感觉前面那么久的训练就像一场梦:过程很长很波折,但是却几乎什么都没留下。先前的雄心壮志估计又要毁于一旦了。

现在看看还是有长进的。

Day -1

上午还是急训。

最后稍稍看了看历年题,特别是去年两道题,但是好像也没什么思路,索性去看题解,大概了解一下做法。

下午跟着别的同学一起去HZNU(我们住校内)。一路上还是听歌(前几天发现高达独角兽的歌特好听)。由于还是有点慌,因此差点把ZJU看成HZNU。

尽管很享受路上的时光,但是最终,车开进了学校。到达上次NOIP时来过的酒店住下。(所以为什么晚上会有查寝的可能性?)

在酒店安置好以后,我们一群人都跑到一个房间去了,中途去楼下吃了碗面。看看大家都不慌,都在摆烂,我也不知道是赞同还是反对,不过也没怎么认真复习,也就把small trick和警示后人之类的看了一点。

完了,是“大凶”。

这里我要衷心感谢我的母亲晚上跋山涉水地从家里赶过来,她给我提供了很大的精神支撑。

Day 0

一大早起床,吃早饭,到考场坐下。

早上七点被叫起来,找了个机会机会上谷开运势。“\color{red}中吉”!那还有救。

去酒店吃了顿极其简单的早餐。

还是很紧张,在HZ早晨的寒风中我感觉我不断在发抖。像做梦一样,省选已在一步前。

然后去考场,门口遇见各位大佬,还有隐藏嘉宾zjf,然后一起进考场。

8:15 a.m.

大概看了一下,应该会用。

「win」「SX」「AK」

8:30 a.m.

考试开始。我瞅了一眼,直接被开幕雷击,我好像一道也不会做……然后开始研究Linux系统。

大概看了一眼三道题目,基本上感觉没一题能做的,第一题很复杂,反倒第二、三题题面看起来简明一点。不过我还是愿意相信出题组排题目是按难度排的,所以就先开T1。

9:00 a.m.

正式开始做题。先去搞第一题,我大致了解了题目的意思,然后有了一个还不错的思路。然后就按着这个思路写了

这次反倒一点头绪都没有,草稿纸上乱画了一堆,题目看了两三遍也没问题。原本有一个比较偏直觉的思路:一条边成为重边的概率可以直接用链长的期望值来算,结果根本不行,而且和轻边数量好像也扯不上太大关系。

感觉情况有点棘手,我担心卡5个小时。尽管机房里不热,我感觉整个人如坠冰窟。

9:30 a.m.

感觉正解估计是想不出来了,所性决定打部分分。想了一个挺暴力的思路:做一个类似树上背包的操作,维护每一个子节点每一种所在链长的概率,在父节点处合并。

然后大致写了个式子,发现很有卷积的样子,但是NTT根本不会。只能写 O(n^3) 了,时间有点难卡。

开始写代码。

10:30 a.m.

写完了,开始一个一个大样例地测。结果到了第二个大样例就出了问题——ans文件里边的答案和我的答案不一样,而且我根据in文件里的输入发现我是对的,ans文件好像错了。但我又感觉不太对,ans文件应该不会错的,于是我感觉可能自己错了。我又回去读了一遍题目,发现——S是一个有序可重复的集合,是排序以后再求最中间那个!!! 完了,只有两个半小时了,我肯定没救了。

代码大致写得差不多了。虽然是个自认为很暴力的代码,但是写起来很复杂。不断地推翻原先比较简单的错误方法,然后改成又烦又长的正确代码。最后搞出了一个前后缀背包,目测常数感人。

然后就是不断调试。

11:00 a.m.

前五个样例过了,这在我意料之内,但是第六个也跑过了,就很神奇了。

但是第七个是过不了。

不过我仿佛很有信心,开始卡常,优化。

第七个居然卡到了2.7s?!

我有点郁闷。 但是OIer怎么会关心时间复杂度证明呢? 不过大概分析一下只有两种可能,但都有可能:1.样例过水(实际上第七个样例前一大半的边都在一条链上);2.程序时间复杂度跑不满,实际上可以证明在 O(n^2) 左右(因为实际上大部分点的最长链长都不会很长,但可能可以被构造数据卡掉)

但是还是卡卡常吧。

12:00 a.m.

于是在我各种各样的努力下,第七个样例卡到了0.4s?!

(警示后人:一定要边改边测样例,且留副本,否则你就会像我一样疯狂按Ctrl+Z)

阿西克斯的奇迹!

然后开始着手后两题,但是也没什么时间来打暴力了。T2、T3都只会最基础的暴力,还有性质强到离谱的部分分。

12:59 a.m.

停止垂死挣扎,最后第一题废掉,第二题bitset开巨大的空间(本来感觉可以用强连通分量缩点来优化一下,不过忘了怎么写了,Kosaraju 算法死活想不起来,就大暴力了),第三个大样例就挂了。第三题没做……

(可惜没上recall的车。)(去年省选只有四个半小时吗???)

1:29 p.m.

以最快的速度检查,填表。

after 1:30 p.m.

回酒店去摸鱼去,顺便研究一下Linux的用法。

吃了顿辣菜。一群人又开始在房间里玩游戏了。不过放松一下也好,不是吗?晚饭吃的是不错的外卖,感谢两位家长。

问了一下,大多都100上下,不过T1好像没人写出正常时间复杂度的代码。

不是,O(n^n)是hyw?这能过?%%%

玩了会儿牌,然后还是稍微看了一点OI相关的内容。

有一种梦的感觉,居然有一题能过所有大样例,基本上可以看作AC了,不过还是有点忧虑,感觉时间复杂度不太对。不过原先的目标也是100多一点,这对Day1的信心提升很大。

当然如果没有第二天的比赛,我会觉得那天下午是我很喜欢的一个下午,大家能在一起快乐玩、聊天,这样的下午对我而言是罕见的。

早点睡。

Day 1

老样子,一大早起床

\color{red}中吉”!

大致与昨天一样。虽然说有昨天的加持,但是还是隐隐慌张。

8:15 a.m.

「SX」「Team」

8:30 a.m.

今天一定不能重演昨天的悲剧! 我瞅了一眼,看起来第一题比较贴近生活。(幸亏我没先去干其他两题,好像都是黑题)然后试验一下昨天研究的g++格式对不对,然后发现不对……于是又开始尝试怎么把编译参数加进编译里………………

是谁说要有交互题的?站出来!

两道交互题,一道抽象树上题目。

这次的T1比昨天好懂很多。

然后因为“本试题目录”的定义斟酌了半天。

8:50 a.m.

基本上搞定了,开始做第一题。我在做之前再三读题,终于好像理解了题意。开始举例子,想办法。

T1的主要难点在于只要对于任意一段区间猫儿小(mex)值都相同就可以,这比较难刻画。而且举的例子都是依靠人类智慧解决的,也没找到什么比较好的方法。

9:10 a.m.

又有一种冷感袭上心头。

虽然说思路没想到,我反倒发现对于 o(n^2) 个区间,只有 O(n) 个值是有效的。(在整一个表格里相同数字形成比较整齐的矩形状)

9:30 a.m.

依然大致有了一个思路,由于前缀猫儿小等于后缀最小值,所以只需从两个端点分别往另一个方向拓展,若相邻两区间值不同,则此位置值可以确定,否则往大填就可以了。(受到了先下降后上升特殊性质的一点启发)

然后开始着手代码。为了减少询问次数,我直接二分跳,应该没问题吧。

9:50 a.m.

大致有一个思路。然后就开始写代码了

10:30 a.m.

代码写完了,折腾了半天调试、对拍。但是拍了好久也没拍出什么。

大致写完了,然后一堆改动优化,样例倒是都过了。但是总感觉有点不放心,然后写对拍。

grader.cpp效率感人。

看起来都没问题,那应该能过了。

11:00 a.m.

看后面两题吧。

感觉T3暴力可以树hash,但是先像T2。

11:20 a.m.

又把check试了一下大样例,发现check好像也可以过?又开始死命地调,因为我总觉得check会超时,不能直接当最终程序调着调着,发现check不知怎么又会超时了,而且好像还有一点问题,不过至少move.cpp里线段树应该没问题了。

11:50 a.m.

终于发现哪里出问题了:我的二分写错了。亏我调了那么久!!!终于每一个大样例都对了,这题好像对了。但是只剩下一个小时了……

发现T2无法做出,而且暴力也不会。开始写T3。

12:30 a.m.

T3的暴力差不多写好了,再回去想想T2。

不过我也没太多兴趣了,有一点盼着结束。

12:59 a.m.

最后一个小时里第二题随便写了一点,在最后的大概十分钟不到的时候把暴力写完了,但是不知为什么,每一次运行的时候都会跳出来一个“段错误(核心已存储)”,根本运行不了,最后不了了之。

T2还是毫无头绪,发现T3好像有菊花图之类的性质可以打。赶紧启动。

话说T3怎么那么多勘误。

1:20 p.m.

时间感觉来不及……

欸,延长了15分钟,那还有救!

1:44 p.m.

检查完。省选结束了。

after 1:45

今年的省选肯定是废了的。得回去学文化课了,明年再试一试吧……

感觉今年还行,好的话有230左右。比去年已经是很大进步了!

回程路上边聊天边听歌。

洛谷上题目难度与估计比较类似。

Day 2

一天whk上完突然发现上半学期结束了,寒假结束了,省选结束了,这个赛季也快结束了。

回望前几天,如同梦一样,印在脑海,却又感觉陌生。

Day 5

出初评成绩了?

没别人一天高。D1T1对了,D2T1不知道为什么挂成87了。

不清楚成绩在申诉期间会不会有变化,不过估计不会更高了。这个成绩对于冲NOI来说,还是太少了。

但是,

至少对于去年的我而言,这次是成功。我一直感觉从去年省选开始我就停滞不前,很担心重蹈覆辙。但从这一次看,我有进步。

向前看,道阻且长,我仍在中途。

最后,感谢我自己。