作者在Codeforces(CF)比赛中遭遇了分数瓶颈,始终卡在2900分这道“墙”前,无法再向上突破,尽管他一直在努力,但CF分数却始终停留在2300分左右,与目标相去甚远,这种矛盾让他深感困惑,不禁质疑自己为何再也上不去,文章围绕这一困境展开,探讨了在竞技编程中突破高分段的重重障碍,以及面对瓶颈时的迷茫与反思。
2900分,在Codeforces的排行榜上,已经是一个足以让绝大多数人仰望的数字,它意味着你可以在全球任何一场Div.1比赛中稳定地出现在前几十名,意味着你的解题速度、代码能力和数学直觉都已经达到了职业选手的级别,可偏偏,这个数字像一道无形的天花板,我撞了整整两年,始终没能再往上挪动哪怕一分。
一开始,我以为是自己刷题不够多,于是我把过去三年所有Div.1的E题、F题翻出来,一道一道地啃,把每个结论的证明都写进笔记,把每类技巧都整理成模板,我每天凌晨两点睡,早上八点起,模拟赛一场不落,可分数就像被焊死在2900附近,偶尔冲到2930,下一场又跌回2870,循环往复。
后来我意识到,问题不在题量,而在“舒适区”,2900分以下的题目,我几乎一眼就能看出解法的大致方向——是构造、是图论、是数论,还是需要套个数据结构,可一旦题目难度超过2900,我发现自己会不自觉地回到最熟悉的套路里:看到“最大化最小值”就想二分,看到“树上路径”就想树剖,看到“计数”就想生成函数,这些方法没有错,但它们让我失去了对题目本质的敏感,那些真正顶尖的选手,往往会在第一眼就跳出框架,用一个极其简洁的模型把问题化繁为简,而我还在用重型武器去轰一座土墙。
另一个瓶颈是“心态”,到了这个分段,每一场比赛都像在走钢丝,我太在意分数了,以至于在比赛中遇到一道卡了二十分钟的题,就会开始焦虑:这场如果掉分,又要多久才能打回来?这种焦虑让我不敢尝试那些“看起来不靠谱”的思路,因为一旦失败,就是时间上的巨大浪费,可真正的突破,往往就藏在那些看似疯狂的尝试里,我见过一位2800分的选手,在一道F题上用了整整四十分钟去验证一个奇怪的猜想,最后AC时,全场只有他一个人做出来,他说:“我没想过它是不是正解,我只是觉得它可能对。”
还有一点,是我最近才想明白的:2900分以上,拼的已经不是“会多少算法”,而是“能否在有限时间内找到问题的核心”,这个核心往往不是某个高级数据结构,而是一个关键的观察——这个序列其实可以分成三段”“这个图一定存在一个哈密顿路径的变种”“这个博弈的胜负只取决于奇偶性”,这些观察需要你对数学结构有极深的直觉,而这种直觉,无法靠刷题获得,只能靠长期的、沉浸式的思考,甚至需要一点天赋。
我认识一位曾经打到过3100分的大佬,他告诉我,他从来不做题,他只“玩”题,每天挑一道难题,不急着写代码,就在纸上画图、列式子、推性质,有时候一坐就是半天,他说:“当你不再把比赛当成排名游戏,而是当成探索游戏时,分数自然就上去了。”我试着模仿他,可我发现我做不到——我太想赢了,太想看到那个数字变成3000,以至于我忘了最初爱上编程竞赛时,那种纯粹因为“想通了一个难题”而兴奋的感觉。
我依然卡在2900分,我偶尔还会在深夜打开Codeforces,看着自己的rating曲线像一条被压平的波浪线,心里不是滋味,但我也慢慢接受了:也许2900分就是我的极限,也许我缺的不是努力,而是某种更玄的东西,可即便如此,我仍然会继续打下去,因为在这个分数上,每一场比赛都像一场与自己的对话——你问自己“你还能不能更进一步”,而答案,永远在下一道题里。
如果你也卡在某个分数上,无论是1900还是2900,我想说:那道墙不是用来撞碎的,而是用来提醒你,你已经在墙的这一边走了很远,至于墙的那边是什么,或许并不比墙这边的风景更重要,但只要你还在走,就总会看到新的东西。

