CSP2025 游记。标题本来打算起“既渡厄劫,自登天门”,但是转念一想我似乎还没有渡过劫难,甚至连准确的估分都做不到。那么就换个标题吧。

在我学习 OI 的三年以来,一个巨大的疑问始终悬挂在心头:我到底会做什么题?

这个疑问从未消解过。在我刚学 OI 的时候,水平很菜,理解力不高,外加自己学的也不是非常刻苦,导致什么都不会。
后来几年里,我学会了很多东西,做了不少题。然而每每点进一道新的洛谷/CF/at 题,却又发现自己完全不会。尤其是梦熊比赛的题目。

一直觉得自己的实力应当有提高,然而却不知道到底高了多少,现在又是什么情况。

就这样渡过了 2024 CSP。因为题目的水分得到了提高一等。在场上觉得自己做不了不去想正解,在下场之后才发现题怎么这么简单。

之后的一年似乎什么都没干。跟着代码源(机构)训练了一整年,做的全是 CF/at 题目,OI 题倒是没做多少。
每次被 CF 任意难度的题(从 1200 到 2000 的简单题)创死。ABC 成绩也一直没有长进,很少 6 题,我到现在 at 都没有突破 1600.

比较逆天的是代码源普及组课程(L4 上)结课测试,被当场击杀,T2 和 T3 都想假了,两题一共只有 10 pts,整场比赛得分 140 pts。

然后就到了 11 月。秋天开始了。

在我的记忆里,我好像还是当初五年级全校最小的 OIer,还有着充足的时间和光明的未来。但现在我已经初三(学籍初二)了,离退役也不远了。

2024-2025 的一整年如同飞一般滑过,未来滚滚而来,不问人们意见。


初赛,我一直认为初赛虽然不重要,却是挺有意思的。可以拿到文化课去当思考题。

我之前的初赛分数一直都不高,常常挂在程序判断/填空上。这次初赛,我在第二题就被卡住了:没学 KMP ;) 试图现场理解 border 是什么,弄错了几次感觉题目有问题,最后发现是自己理解错了然后切掉了。

选择题都比较简单,后面的几个程序题一眼看上去还是同样困难。然而,令人惊讶的是,在长时间的奋力思考下,我最终都成功理解了它们的意图。唯一的例外是最后那个 (t, n) 门限的组合构造,不过我至少填出了 43 题之外的其他题。

最后得分 97.


复赛。没什么好讲的,该会就会,不会就不会。T1 类似于 duel 和密码锁,不过中间想错一次,又没有注意到 n 是偶数(事实上我考前几天才做过一个保证 n 是偶数的题:https://www.luogu.com.cn/problem/P11452,这个题 n 为奇数难度会飙升)。半小时通过大样例。

T2 不会。一开始还想这个题怎么这么神秘,用了一会才注意到是最小生成树(ad-hoc 做傻了)。但是我还是只会枚举选哪些乡村的 $O(2^k m \log m)$ 做法,过不了。先看了 T3,但是也不会,又回来。想了 114514 种神秘的图论建模试图去掉乡村改造的费用从而自动化求解,都行不通。最后仔细想了想为什么 n,m 不同阶,偶然注意到可以只保留最小生成树上的边,就会了。写了一个 k 路归并,$O(2^k n k^2)$。过了大样例,此时是 2h。

当然我最后发现大样例只有真实数据的 1/10 规模,而我大样例本机 200ms,感觉要挂 20 pts。有一种比较好的做法可以去掉两个 k:每个乡村改造的状态有一个 MST,每个状态都可以从之前的一个状态递推转移过来,这个转移使用二路归并,然后重跑 kruskal 即可。

T3 一开始被 t1, t2 不等长迷惑了,想的非常复杂。过了一会儿发现 t1, t2 必须等长,否则方案数一定是 0(不可以,总司令)。然后就可以分解为最长前后缀加上中间不同一段三部分。对于任意一个替换方案,它必然是将中间不同部分替换,然后外加一段相同的前/后缀。

然后就不会了。写了 hash 的 nq 暴力,但是跑的非常快(跑不满),轻松过了所有大样例。最低 50,如果数据水说不定能高一些。

我在想的时候也发现了这个题和多串匹配似乎是有不小的关系。然而我不会 AC 自动机 :( 以及 2048 MiB 让人想起追忆Trie,我也没想到怎么用。

T4 觉得不像是我能会的题,打了 20 pts 暴力,这时只剩很少的时间了,检查了前几个题,发现 T2 有挂分可能,但是解决不了。离场了。

之后发现 T4 竟然还有 16 pts 特殊性质分可以拿我没拿。

出来之后发现 T2 人均被卡常,不用精细实现确实难过。T3 有同学弄出来了,但是银牌佬学长用了 AC 自动机+三维偏序,也有被卡常风险。

分数在 [250, 320] 之间随机取值。我能拿到 7 级钩子吗?

upd:T3 没看到 s1==s2 吓得半死。T2 数组开小有可能挂到 64 pts,最低 184 pts了。

upd2:似乎我获得了 250 pts。银牌学长得到了 336.成绩不算太差了。

upd3:发现赛时代码没有任何问题。我 T2 数组开到了正确的大小(1e4+25),T3 加了防御性的特判。之前是自己吓自己了。

并且似乎打进二倍队线了。


我剑我法,新世新生。

既渡厄劫,自登天门。