算法竞赛退役记
我记不起首次阅读 zzq 这篇 关于 WF2024 的文章(建议大家都去读一下) 是什么时候了,与之一并被忘却的是我首次阅读这篇文章时的感想——即使我对这篇文章的内容印象深刻,从而此刻我立即想到应该引用它。
“是的,我们就是如这篇文章所说的输掉的,我们甚至也拿了第 11 名。” 如果这样为自己解释的话当然足够简短,但唯一的问题是这个答案不够准确,我们的故事不是其他人故事的翻版,我得再说两句。
ECF,简单来看,我们是在一个冠军到第九名都通过了 9 个题的比赛会做 9 个题,但代码写错了一点最终只通过了 8 个,获得了个反正就是没出线也无所谓多少名的排名——其实通过第 9 个也没什么意义,罚时太高了也还是没出线。
离出线差多少呢?一个客观的回答是:
- 相差懂得看榜的能力。我们最后一次看榜是在通过 D 之后,此时扫了一眼前排还是只有 WF 皇帝通过了 L 而 CFG 都是光头,于是我们认定写完 F 下班就可以了。
- 相差一套可靠的板子。F 需要抄全套多项式基本操作 + 复合逆以及实现一个全在线卷积。然而抄多项式基本操作 + 复合逆的过程就花费了许多无谓的调试时间,因为抄错了或是没用对板子。而全在线卷积更是彻头彻尾的黑色幽默,封榜后不久就已经只差全在线卷积的部分没写对了,然而队里竟然找不出一个能写对全在线卷积的人。当我终于调对现场发明的全在线卷积并又改正了一堆莫名其妙的的错误时已经是 4:55 了,交上去却获得了 RE 的结果——我忘删调试过程中加上的
assert了,最后的结局上面已经写过了。 - 相差冷静的心态。事实上最后一个题在时间明显充裕的前提下没写完早在 PKUTS 就出现过了,然而队伍特色就是顺风打得开开心心,逆风直接晕眩代码完全写不对。
- 相差良好的配合,相差充足的预案准备……
- 足以获胜的运气。
我还可以声称题目有问题,如果是一年前或是两年前的我一定会这样说,但现在的我不会这样觉得了。如果你对这场比赛的题目有任何疑问的话,我想你可能对于(至少是中国的)xcpc 和 OI 的命题流程缺少认识。就这场比赛而言的话,我推荐你仔细思考一下 G 题,倒不是要思考这道题该怎么做,而是思考一下这道题为什么出现在这里;再联想一下 CNOI 里最近出现的 追忆 这种题目,以及我自己选出来的 CTT 题。觉得题目有问题的人,其实只是持着与命题人不同的观念。
但我其实觉得上面这些回答都不够本质,我会给出最主观的回答是:相差在 CTS24/CTS25 一步之遥没有进国家队。
这个回答准确吗?我不敢妄言放在我的队友身上有多么准确,但放在我身上是足够准确的。
引用一下我为 NOI24、CTS25、IOI25 所写的游记 1 2 3,这样下面提及相关内容就不做解释了。
我曾读到过一些曾获 NOI 金牌的选手写下的文章,描述他们对 “冲 NOI 金牌” 这件事感到心力交瘁,于是进入集训队、心愿达成后就从此和算法竞赛一刀两断。虽然同样记不得读到这些文章的时间,但我还记得当时的想法是:这是个合理的选择,但我应该不会这么做。(我不知道这样引用是否礼貌,但一个例子是 这一篇)
是的,我确实没有这样做, NOI23 进集训队后我仍然全心全意地学习算法竞赛——在接下来一年半的时间里。但慢慢地,事情开始有了变化。要谈起变化,需要先从 “本来如何说起”,一开始、或者说我刚升上高中的时候,训练是非常愉快的,我不会的内容很多,但那时我的求知欲很强,我饶有兴味地学习了许多陌生的理论;也许我比较聪明,但更确切地说是记忆力比较好,做过一道类似的题后再遇到相似的题,我总能回想起此前见过题目的做法,从而依葫芦画瓢地将其解决。形式幂级数理论、集合幂级数理论、top tree、网络流建模技巧、思维题常见 trick……我掌握的知识越来越多。进入浙江省队、APIO 最高分、PKUSC Day1 最高分、进入集训队、CTT rk8、国家队选拔 rk6……我取得的成绩越来越多。看上去我在算法竞赛的旅途可称得上顺风顺水,那么训练变得更愉快了吗?
并没有,反倒还变得更乏味甚至是痛苦了。
为什么呢?一方面人总会有对自己的心理预期,随着我水平的逐渐提高,心理预期当然也水涨船高,然而至少就我感受而言,水平关于花费时间的函数终究是个凹函数,进步得越来越慢,而预期却是线性增长,水平达不到预期,当然是不愉快的。当然如果一个人这样诉苦,一个公式化的劝解回答自然是:何必这样为难自己呢,降低点预期不行吗?但我其实会有些觉得,这个回答不过是流于表面的社交公式。对于收到这个回答的多数人来说,既然都这么难,要放弃早就放弃了,何必等到你这个外人来说。
刚开始学算法竞赛时、或者说上初中之前,和其他人一样我也完全搞不清一年比赛的流程是什么。“IOI” 这个词对我来说仅仅只在同学互膜时被用到,但我心中其实明确地知道,IOI 是国际比赛,每年都没几个人能去,那些互膜的话其实是毫无道理的;初一初二时,每到 8 月(确切说是 20 年和 21 年的 8 月)我总能刷到关于中国队在 IOI 获得四块金牌,团体总分第一的内容,也同样是这个时候,我开始在同龄人中展露头角,我在 CSP-S20 中同届分数排名第二,维持住这样的优势,我也能进前四?有时我会这样想,但理智又告诉我不太对;初三到高一,我经历了一些挫折,心理预期还是回归实际,能进个浙江省队就不错了,进个集训队就更好了,我不再关注 IOI 的事了;NOI23 结束后,其实我也不知道要做什么,但 CTT23 竟然随便打就打到了 rk8,CTS24 结束后翻到 rk6 进了答辩,IOI 似乎近在眼前。
除却谈论这些我心目中的 IOI 的煽情片段,最为重要的是,除了再打一年冲国家队外,我也找不到更适合的事去做,其他选项或许是去学文化课,或者专心读预科,又或者单纯摆一年,但看上去都不是很有吸引力。于是我将目标设定于此,虽然带来了更多的痛苦,但我相信这不是错误的选择。
除了心理预期,另一方面的因素是,正因为会的变多了,因而可以学习的有用的内容变少了,反倒减少了探索的乐趣。理想情况下,学习的内容当然最好既有趣,又能为我获得更好的成绩提供帮助。但两者兼得的知识是有限的,当我足够训练有素,从而把这部分内容都学完之后,剩下的内容要么无聊但要获得更好的成绩必须学,要么有趣但是对获得更好的成绩没有帮助,那么我该做什么呢?这永远是一个矛盾。
虽然训练不像以前那样愉快,但经历重重磨难后,我成功了。是成功拿到了 IOI2025 的金牌吗?如果这样觉得那就有些偏差认知了,其实是成功进了国家队。在 CTS25 Day2 出来得知我进国家队的消息时,我激动地忍不住落泪,心中感慨经历了那么多的磨难,终究还是迎来了好结局。但随后我发现了一个问题:是不是其实是我偏差认知了,好像大多数人都觉得 “结局” 应该是 IOI 取得一个好成绩来着?
我不想长篇累牍地分析哪种看法更对,但我产生这样的想法大致是由于我为冲国家队这件事准备了太久,再加上我也没那么看重 IOI 的排名,我最初的愿望就是拿到 IOI 金牌。但事实上没能解决这个矛盾让我的高三下学期过得十分混乱,如果让我现在回看,我会说生活的重点似乎既不是算法竞赛,也没有迁移到其他事上,也许我什么都没干。
所幸这个提前开香槟的行为并没有造成什么后果,我还是如愿拿到了 IOI 金牌(虽然最初我还是因为 Day2 糟糕的表现难过了几天)。现在真的结束了!结束了吗?那 xcpc 是什么?
在稍早一点的时候我答应比克,下个赛季和他以及沈老师组队,并且目标是 WF。于是我问自己:我有多想去 WF?答案似乎是,我想去,但是我不想训练。但不训练好像不行,于是我仔细想了想,发现我不想自己一个人训练,但如果三个人一起训练似乎还能接受。
本文尽力避免以往被我滥用的细节描写,所以这里不谈任何一场比赛的细节。PKUTS 后综合排名我们队是第三,前两名呆呆鸟和一步之遥都明确表示不去 WF,于是 WF 名额基本上演变为了我们和第四名飞带不长队的争夺。我从 PKUTS 的表现发现飞带不长队的实力不俗(也许我早在 thupc 就该知道了),并意识到要战胜他们并没有那么简单。
我们平时并不训练,唯有 8 月末军训时以及区域赛前、ECF 前训了几场,主要是因为比克很忙,我的态度游走于 “好像该训练” 以及 “好像又懒得训练” 之间,而沈老师又性格太弱势。不过我的态度游走于两者之间也是因为我发现飞带不长队其实平时也不训练,或许这也是某种程度上的公平竞技。
选站时我们觉得西安、沈阳比较容易出线 ECF,CCPC 则随便选了站重庆。最早的是西安,现在来看这场比赛或许是 ECF 的缩影,总之我们因为写不对代码罚时差太多只拿了第四,而且离夺冠差得很远;稍后的沈阳倒是给我们分配了一堆擅长的题去做,我们过了 12 题,而正式队第二名只过了 9 题;重庆介于两者之间,我们过了 10 题,比正式队第二名多过了一道我很擅长的题目。
也许是在西安的失败后,我想了想 WF 到底对我意味着什么。IOI 每年产生 28 块金牌,而 WF 则有 36 个人可以拿到奖牌,于是我对自己说,可以这样换算,拿 IOI 排名除以 3 换算到 WF 排名,这样功利的角度是等效的。这样一算,我发现我差不多已经得到了 WF 亚军,要刷新我的战绩必须在 WF 夺冠了。这样一想,如果是出于证明自己(或者谈论我有多么爱 xcpc,但事实是我远远不如像爱 IOI 那样爱 xcpc)的目的,去 WF 似乎对我没什么价值,因为要夺冠才能证明自己的话,我觉得大概率做不到。功利意义上如何呢?我觉得 HR 没准挺认同上面的想法,在参赛人数差不多(其实我不确定)的前提下,比较获奖人数来比较含金量似乎挺靠谱的,所以功利意义上似乎也没什么价值。
但我还是有点想去 WF,只是出于一个很简单的念头:从没参加过,我想去玩玩!这个动机确实不够强,所以我觉得如果 ECF 是飞带长队赢,我也能接受。
ECF 的经历在文章一开头我就已经讲过了。我想写到这里,我已经顺利解释了为什么我要将没有出线 WF 归因于我进了国家队。如果由于写作能力有限导致你没有读出来的话,我也不介意再说一遍:正因我进了国家队,我的 OI 生涯没有多少遗憾,我才不再有为 xcpc 付出一切的心气了。
在 CTS25/IOI25 两次我试图宣告结束而又发现其实不可行后,我现在终于可以宣告,我真的要自算法竞赛退役了。当然,兴许我还可以说服比克和沈老师再打一年,或者他们不同意的话另组一只队继续打。但对我来说,何必如此呢?为了再重复一遍区域赛夺冠的剧本,又或是弥补 ECF 未竟的遗憾?但正如上文所分析,我几乎不可能得到更多东西了。
得不到更多东西,我会失去一些东西吗?事实上确实会,而且失去的东西是最为珍贵的时间。与 24 年初不同,两年后,我已经知道我该做些什么算法竞赛之外的事了。但令人沮丧的是,我发现在这些事情上的尝试并不那么顺利,并且当我不知道要做什么的时候,总还是会路径依赖做一些算法竞赛相关的事,我觉得这已经对我实现别的目标构成妨碍了。
于是我终于能理解我曾不理解的行为,在 IOI 的心愿达成后,虽然稍迟片刻,但现在终于能与算法竞赛告别。我仍然乐意对算法竞赛的命题工作提供一定协助,如果此后能去 CCPCF 或者 UCUPF 我也乐意去体验一下,但算法竞赛不再是、也不能再是我生活中最重要的主题了。