实验室CF,代码战场上的青春,实验室cf
深夜十一点,整栋教学楼只剩下五楼东侧的那间房间还亮着灯,透过门缝,能听到噼里啪啦的键盘敲击声,偶尔夹杂一两句“这题用线段树优化”“不对,应该拆点跑网络流”的争论,门牌上写着“算法设计与分析实验室”,但屋里的人更喜欢叫它另一个名字——“实验室CF”。

“CF”在这里不是 compare 的缩写,而是所有OIer和ACM-ICPC选手都熟悉的那个平台——Codeforces,这间实验室,就是一群“竞赛狗”的大本营,墙上贴满了往届区域赛的海报,桌上三台显示器并排亮着,一台开着题目,一台挂着评测机状态,还有一台放着实时排名,角落里那台老式饮水机永远烧不满,因为总有人忘记接水——题目做疯了,什么都顾不上。
我第一次走进实验室CF,是大二那年秋天,学长说:“来,试试这场Div.2。”我盯着屏幕上那些英文字母,连“binary search”都要反应三秒,旁边的老张已经切完A题,B题交了一发 Accepted,屏幕上绿色的“+”号亮起来,他头也不回地喊:“第一发就过,这把稳了。”我深吸一口气,把目光重新钉回题目,那一晚,我只做出了一道题,排名四千开外,走的时候,实验室只有我和另一个还在调图论的研一学姐,她没抬头,只说了一句:“明天还有一场edu,来不来?”
来,当然来。
实验室CF的日子,像一场漫长的拉锯战,白天上课,晚上七点一过,所有人都像被上了发条,准时出现在座位上,虚拟比赛、补题、写题解、互相出题卡对方,我们会在别人拿一血时集体鼓掌起哄,会在某个队友最后十秒交上代码通过时抱头痛哭——夸张了,但那种心跳加速的感觉是真实的,有一回,为了解一道关于“树上启发式合并”的题,六个人围着白板画了三个小时,最后是小胖从厕所跑回来大喊“哦!我懂了!”然后抢过键盘敲了半个小时,那道题最终过了,评测机上显示绿色的“Accepted”时,老张把保温杯举过头顶,像举着奖杯。
实验室CF不只有高光,有太多夜晚,我们看着屏幕上红色的“Wrong answer on test 2”发呆,看着排行榜一路下滑,看着别人三个小时过了五道题,自己却在卡D题的某个边界条件,有人摔过键盘,有人趴在桌上睡着,有人在天亮时默默关掉电脑,说“这道题我明天再补”,但第二天晚上,他一定又出现在那个座位上,没人规定必须来,可大家就像约好了一样——也许是因为,如果今晚不来,那昨晚那道题就没人陪自己讨论了。
后来我明白了,实验室CF之所以特别,不是因为Codeforces这个平台,而是因为这群人,当你卡题时,旁边会伸过来一罐红牛;当你WA到崩溃时,会有人拍拍你肩膀说“我帮你看看”;当你终于看到绿色的“Accepted”时,整个实验室会爆发出掌声——哪怕他们根本不认识那道题,我们在这间屋子里,用代码解题,也用代码解彼此的心事,有人失恋了,来打一场CF,Rank打高了,心情就好了;有人保研没成功,来打一场CF,Rating涨了,又觉得自己行了,一切情绪都可以转化为代码,一切困难都可以通过调试解决——至少暂时是这样。
大四那年秋天,实验室CF迎来最后一次区域赛,我们五个队友并肩走进考场,像过去的每一场训练一样,键盘声依旧密集,屏幕上的绿色“+”一个接一个亮起,最后两个小时,我们的排名卡在金牌区边缘,倒数第二道题我读了半天没有思路,小胖突然说:“你还记得那年那道树上启发式合并吗?”我愣了一下,然后笑了,是啊,比那更难的题都见过,怕什么,我重新读题,换了一种建图方式,敲完最后一段代码,提交——等待——绿色的“Accepted”。
实验室CF的墙上又多了一张奖状,但比奖状更珍贵的,是每个深夜亮着的那盏灯,是每道题背后大家七嘴八舌的讨论,是那句永远有效的暗号:“明天还有一场,来不来?”
来,当然来,因为我们知道,只要这间实验室还亮着灯,青春就还在代码里奔跑。





