万事皆吉

· · 休闲·娱乐

写作灵感来源:

灵感来源于@EastSnowLotos的一篇小说《轻舟已过万重山》洛谷,世界观基本相同,不过是地点、人物有改变。与现实无关!

观前提示:

本文为作者初写,AI润色,使用模型为Qwen 3.5。文中的比赛类题目选自洛谷题库,混搭而成,若与文中时间线重合的APIO、省选等比赛题目不符,请不要怪罪,因为题目选自洛谷题库,混搭而成,难免有缺漏,还请谅解

广告

水林服务器招新拉!Java模组服!有加入意愿请联系[email protected]

第一章:闽江畔的黎明

本文为虚构文章!请勿与现实混淆!

2025年 福建省福州市

三月二十八日,晚上十一点半。

福州一中的宿舍楼里,潮湿的空气里弥漫着淡淡的书香和键盘轴体的味道。206 宿舍的灯还亮着,林山坐在上铺,屏幕的蓝光映在他略显疲惫的脸上。洛谷的个人主页上,那个写着“山中有林”的红名是他过去一年无数个深夜换来的勋章。

旁边的床铺传来轻微的动静,林自由探出头来,手里还端着电脑,屏幕上是《Minecraft》的游戏界面,还有一半是他自己的洛谷账号界面(红名 Xzops)。

“还在刷模板?”林自由的声音带着几分慵懒,“早点睡吧,明天才是正戏。”

林山保存了代码,揉了揉眉心:“这道动态规划的优化我还是有点没底。你呢,还在玩麦块啊?”

“放松一下。”林自由笑了笑,把手机放下,“你知道的,搭建红石电路和写代码其实差不多,都是逻辑构建。越到这时候,越不能把弦崩断了。”

林山叹了口气,靠在床板上。林自由总是这样,明明实力深不可测,却总是一副云淡风轻的样子。作为同班同学兼室友,林山太清楚这两人的差距了。在信息学竞赛这条路上,林自由是那种天赋型选手,而自己,更多的是靠汗水堆积起来的堡垒。

“对了,”林自由忽然认真起来,“明天如果考到图论,别只盯着最短路想。有时候,把图拆成点,或者把点连成图,答案就在转化里。”

“知道了,大佬。”林山苦笑,“那你觉得明天会考什么?”

“不知道。”林自由躺回枕头上,关了灯,“但不管考什么,我们都得把它当成一个待完成的存档,一块方块一块方块地搭好。”

宿舍陷入黑暗,只有窗外福州城隐约的灯火透进来。林山听着上铺逐渐平稳的呼吸声,心里却怎么也平静不下来。明天是福建省选的第一天,对于高三的他来说,这几乎是最后一搏。 手机屏幕亮了一下,是竞赛群里的消息。有人在讨论明天的天气,有人在转发锦鲤。林山划掉消息,点开洛谷,看了看自己最近的比赛记录。稳定性,这是他最大的问题。就像搭房子,有时候地基打得好,有时候却因为一块方块的错位,导致整个建筑崩塌。

“睡吧。”边上传来林自由模糊的声音,“明天还要早起。”

“嗯。”林山放下手机,闭上眼睛。

闽江的水声仿佛在耳边流淌,带着这座城市的湿润与温柔,也带着未知的挑战。

本文为虚构文章!请勿与现实混淆!

三月二十九日,早上七点半。

福州的三月总是多雨。林山走出宿舍楼时,细密的雨丝正斜织着,空气里带着泥土和榕树叶子的气息。他撑开伞,和林自由并肩走向学校门口的一台新能源出租车。

考场设在师大附中。虽然两校都在一个城市里,但此刻的氛围却截然不同。校门口已经聚集了许多穿着各色校服的学生,福州一中、师大附中、厦门一中、宁德一中……全省最顶尖的信息学选手都汇聚于此。

“林山。”

一个熟悉的声音传来。林山转头,看到了蒋兴。师大附中的王牌,CSP-S 连续两轮一等奖的得主,此刻正收着伞,眼神里带着几分锐利。

“早。”林山点点头。

“听说你们一中今年的势头很猛。”蒋兴笑了笑,话里有话,“尤其是你那位室友。”

林山看了一眼走在半步之前的林自由,后者正盯着地面的水洼出神,似乎完全没听到这边的 对话。“各凭本事吧。”

“那是自然。”蒋兴拍了拍他的肩膀,“考场见。”

走进考点大厅,林山又看到了一个熟悉的身影。金思颖,厦门一中的女生,NOIP2024 成绩全省第三。她正站在角落里背着手,嘴里默念着什么,大概是在复盘之前的错题。

除了这些老面孔,人群中还夹杂着几张陌生的面孔。几个高一的学生,胸前挂着准考证,脸上还带着未脱的稚气,但眼神却亮得惊人。那是属于初生牛犊的光芒,无所畏惧,直刺人心。

“紧张吗?”林自由忽然问。

“有点。”林山老实承认,“你呢?”

“还好。”林自由转过头,雨水顺着他的发梢滴落,“就把他们当成游戏里的 BOSS 吧。血条再长,也有归零的时候。”

七点五十分,工作人员开始引导入场。

林山深吸了一口气,福州湿润的空气涌入肺叶,让他稍微清醒了一些。他跟着队伍走上楼梯,经过走廊时,透过窗户可以看到附近闽江的轮廓,灰蒙蒙的江面上,几艘货船正缓缓驶过。 那是通往未来的船吗?他不知道。

八点整,坐在电脑前,屏幕亮起。

登录系统,检查环境,编译测试程序。一切流程熟练得肌肉记忆。

还有五分钟。

林山闭上眼睛,脑海里闪过昨晚林自由的话:“一块方块一块方块地搭好。”

本文为虚构文章!请勿与现实混淆!

八点整,题目下发。

林山睁开眼,目光迅速扫过屏幕。

第一题:模拟。复杂的规则判断,需要极强的细心程度。

第二题:图论。最短路径计数,但边权会随时间变化。

第三题:动态规划。树上的状态转移,数据范围暗示需要矩阵优化或者更高级的数据结构。

林山的心跳漏了一拍。第三题,动态规划。昨晚他复习了一晚上的图论,结果最难的题落在了 DP 上。而林自由昨晚随口提的“转化”,似乎正是针对这类问题的。 他强迫自己不去想后果,手指放在键盘上。

先做第一题。

模拟题虽然繁琐,但胜在思路直接。林山理清了所有的判断条件,开始构建代码框架。键盘的敲击声在考场里此起彼伏,像是一场没有硝烟的战争。

四十分钟后,第一题样例通过。

他没有停留,立刻转向第二题。

随时间变化的边权。这意味着不能直接用 Dijkstra。需要把时间维度和空间维度结合起来。

林山在草稿纸上画了几个图,忽然灵光一闪。

把时间看作分层图的层数。

对,就是这样。

他迅速敲下代码,建立分层图模型,跑最短路。编译,运行,通过。

时间过去了一个半小时。还剩三个半小时。

所有的压力,都来到了第三题。

本文为虚构文章!请勿与现实混淆!

第三题的题干很长,描述了一棵树上节点状态的依赖关系。

树上的动态规划。如果直接做,复杂度是指数级的。必须优化。

林山盯着屏幕,脑海里开始搜索所有的优化手段。斜率优化?不行。四边形不等式?不适用。

矩阵快速幂?

他皱了皱眉。如果是矩阵快速幂,需要构造转移矩阵。但这棵树的结构并不规则,每个节点 的子节点数量不同,如何统一构造?

汗水顺着他的额角滑落。

他想起林自由昨晚玩《Minecraft》时的样子。那些复杂的红石机器,看似杂乱无章,实则每一个中继器、每一个比较器都有它的位置。

“都是逻辑构建。”

林山闭上眼睛,不再执着于具体的公式,而是开始想象这棵树的结构。

如果把子树的状态看作一个向量……如果把父节点的转移看作一个矩阵……

不对,矩阵大小不固定。

那能不能用线段树维护矩阵乘法?

他的眼睛猛地睁开。

动态 DP。用线段树维护树链剖分后的矩阵乘积。

这个思路一旦打通,剩下的就是实现细节。林山的手指开始飞舞,代码像流水一样从指尖倾 泻而出。定义结构体,重载乘号,建树,修改,查询……

他进入了一种忘我的状态。周围考生的咳嗽声,键盘声,甚至窗外的雨声都消失了。世界里 只剩下逻辑的真伪,只有代码的对错。

最后一个分号敲下。

编译。通过。

样例。通过。

大样例。通过。

林山看了一眼右下角的时间。还剩四十分钟。

他靠在椅背上,长长地吐出一口气。手心里全是汗,但心里却前所未有的踏实。

本文为虚构文章!请勿与现实混淆!

下午一点整,考试结束。

林山走出考场时,雨已经停了。福州的天空放晴,阳光穿透云层,洒在湿漉漉的地面上,反 射出耀眼的光芒。

林自由已经在门口等着了,手里拿着两瓶矿泉水。

“怎么样?”林自由递过水。

“第三题写了动态 DP。”林山拧开瓶盖,灌了一大口,“应该能拿不少分。”

“可以啊。”林自由笑了笑,“看来昨晚的游戏没白玩。”

“你呢?”

“还行吧,第三题用了生成函数。”林自由说得轻描淡写,仿佛只是在讨论中午吃什么。

林山无奈地摇摇头。这就是天才和普通人的区别吗?

不远处,蒋兴和金思颖也走了出来。蒋兴看到林山,远远地举了举手,脸上带着释然的笑容。 金思颖则是一脸平静,正和身边的教练交流着什么。

那些高一的小孩们则兴奋地讨论着题目,眼里闪烁着光芒。那是属于他们的时代,而林山知 道,无论结果如何,属于自己的这一章,已经写下了最用力的一笔。

“走吧。”林自由拍了拍林山的肩膀,“回学校?”

“嗯。”

“晚上吃什么?”

“达道鱼丸。”林山说,“不管成绩怎么样,这顿我请。”

“行。”林自由笑了,“那我得多放点醋。”

两人并肩走下台阶,身影被阳光拉得很长。

闽江在不远处静静流淌,承载着这座城市的过往与未来。省选的成绩还要等几天才会公布, 那一刻的尘埃落定或许会决定很多人的去向。

但此刻,在这个雨后的午后,两个少年走在回家的路上,讨论着鱼丸的醋要放多少,讨论着 下一个版本的游戏更新,讨论着洛谷上还没刷完的题目。

竞赛之路漫长而艰辛,充满了不确定性与竞争。但幸好,这条路不是一个人走的。

“对了,”林山忽然说,“如果进了省队,集训的时候,我们还能住一个宿舍吗?”

林自由想了想,嘴角上扬:“只要机房有上下铺,我就陪你住。”

“一言为定。”

“一言为定。”

阳光正好,微风不燥。属于他们的故事,才刚刚开始。

第二章:潮汐之间

本文为虚构文章!请勿与现实混淆!

三月二十九日,晚上十一点十五分。

福州一中的宿舍楼里,206 室的灯已经熄了。潮湿的夜风从阳台的门缝里钻进来,带着乌 龙江特有的水汽。林山躺在上铺,手机屏幕的微光映在他的瞳孔里,像是一簇跳动的火苗。

上铺传来轻微的翻身声,木板发出“吱呀”的轻响。

“睡了吗?”林山压低声音,手指在屏幕上敲击。

几乎是下一秒,旁边的床铺传来了手机震动的嗡嗡声。林自由的消息回了过来:“没。脑子 里还在跑第二题的图。”

林山苦笑了一下,打字:“我也是。那个动态规划的状态转移,我总觉得漏了一种情况。”

“别想了。”林自由的消息很快跳出来,“考完了就是考完了。现在的每一个念头,都是在 给焦虑添柴火,别想了,再想的是Gay。”

林山翻了个身,面向墙壁。宿舍里还有其他两个室友,早就睡熟了,呼吸声均匀而绵长。只 有他们这两个信息学竞赛生,像两座孤岛,在深夜的黑暗里通过信号相连。

“水林服务器今晚有人开发了新的区域,960格×960格呢。”林山忽然转移了话题,“要 不要上去看看?”

“明天吧。”林自由回复,“今晚适合放空。你知道的,创造模式也需要灵感,带着疲惫方 块搭不出好建筑。”

林山盯着这句话,手指悬在发送键上许久。

“自由,”他打字,“如果这次省选结果出来,我们其中一个进了省队,另一个没进……"

消息发出去后,他有些后悔。这个问题太沉重,像一块巨石压在乌龙江的江底。

脚的对边沉默了很久。久到林山以为林自由已经睡着了。

“那就一个去集训,一个留校高考。”林自由的消息终于来了,“但服务器里的城市,还得 一起建。说好要盖的摩天大楼,缺了谁的图纸都不行。”

林山看着屏幕,眼眶微微发热。

“好。”他回复,“一起建。”

“睡吧。”林自由的声音从旁边飘过来,带着困倦的沙哑,“明天还要上课。”

“嗯。”

林山关掉手机,黑暗重新笼罩了 206 室。窗外,福州城的灯火依旧璀璨,闽江的潮水在远处无声地涨落,像是在等待某个判决。

本文为虚构文章!请勿与现实混淆!

2025年4月1日,愚人节。

林山是被“福州一中信息社团群”里的消息提示音吵醒的。他迷迷糊糊地摸过手机,眯着眼 睛扫了一眼——

“AAA宇宙第一帅:福建成绩出了?”

“wssb:真的假的?在哪看的?”

“一4高伟:听说福州一中这次名额增加了?”

他的心脏猛地收缩,睡意瞬间消散。手指颤抖着点开浏览器,输入 CCF 官网的地址。刷新,刷新,再刷新。

页面上只有熟悉的蓝色导航栏,没有任何关于省选名单的公告。

“愚人节快乐。”同桌林自由在微信上发来一个冷笑的表情,“群里那帮高一的瞎起哄。”

林山长舒了一口气,靠在椅背上,感觉后背全是冷汗。

愚人节。去年的这个时候,他还在为了省选拼命刷洛谷的月赛题,连今天是几号都记不清。

那时候的世界很简单,只有题目和对错,只有分数和排名。

一年过去了,他依然坐在这个教室里,依然穿着福州一中的校服,依然为了同一个目标努力。 但有些东西不一样了。

比如,他开始害怕等待。等待成绩,等待名单,等待命运被那张薄薄的表格定义。

比如,他开始意识到,除了竞赛,生活里还有其他的东西。比如阳台上的多肉植物,比如食 堂里新出的鱼丸汤,比如和林自由在《Minecraft》里规划的那座国际化大都市。

手机又震了。

林自由:“中午去机房吗?水林服务器的市中心一块地块原本占用的一个xxs搬去海西地块 了,缺个规划师。还是晚上回宿舍再建?”

林山:“去。不过得先应付完上午的数学课。”

林自由:“没事,数学课也可以画草图。”

林山忍不住笑了。转头看向窗外,福州的天空灰蒙蒙的,像是要下雨。

本文为虚构文章!请勿与现实混淆!

上午第四节课,数学。

老师在讲台上讲着导数的压轴题,粉笔灰在阳光里飞舞。林山坐在第三排靠窗的位置,林自 由就在他的右手边。

这是高三(2)班的普通一堂课。周围的同学有的在记笔记,有的在偷偷补觉,有的在传纸 条。

但对于林山和林自由来说,这却是两个世界交汇的时刻。

他们的桌面上摊开着数学试卷,但试卷的空白处,画满了奇怪的线条。那是水林服务器的城 市规划图。中央商务区、住宅区、交通枢纽……他们用铅笔小心翼翼地勾勒着,像是在构建 另一个维度的现实。

“这里建个双子塔怎么样?”林自由压低声音,笔尖在纸上点了点。

“太高了,会和云穿模。”林山摇摇头,“而且服务器性能扛不住,你知道废物简幻欢的垃圾性能。建个地标性的体育馆吧,类似鸟巢的结构。”

“有创意。”林自由笑了笑,眼神里闪烁着光芒,“那就这么定。” 前排的同学转过头来,疑惑地看了一眼他们的试卷:“嘶——你们在画什么?艺术生考试?放弃编程了?”

“没什么。”林山迅速用手遮住草稿纸,“随便涂鸦。”

同学转回去了。林山和林自由对视一眼,都看到了对方眼里的笑意。

这就是竞赛生的秘密花园。在普通人眼里,他们是枯燥的刷题机器;但在彼此眼里,他们是共同构建世界的建筑师。

下课铃响。

老师收拾好教案,临走前说了一句:“你们两个信息生,省选成绩快出了吧?不管结果如何, 高考才是最后的底线。”

教室里安静了一瞬,随即爆发出讨论声。

林山合上笔盖,心里沉甸甸的。

底线。

啊,是的。底线。

高考才是最后的底线。

对于他们来说,竞赛是上限,高考是底线。但有时候,为了触碰上限,他们几乎站在了底线 的边缘。

“走吧。”林自由站起身,拍了拍他的肩膀,“去机房。”

本文为虚构文章!请勿与现实混淆!

中午一点,学校机房。

这是省选之后,林山第一次正式回到机房。推开门,熟悉的灰尘味混合着电脑主机的散热味(不知道哪个学生玩《极品飞车:集结》把画质拉到最高完之后跑掉了)扑面而来。

机房里人不多。几个高一的学弟正在调试机器,看到他们进来,纷纷点头打招呼。

“山哥,自由哥。”

“嗯。”林山应了一声,走到自己熟悉的座位坐下。

林自由坐在旁边的位置,熟练地打开电脑,登录游戏。

水林服务器。加载进度条缓缓推进,最终定格在那个熟悉的出生点。

眼前是一片广阔的丘陵,附近已经矗立起几座高楼。那是他们过去两年一点一点搭建起来的 成果。每一块方块,都记录着某个深夜的灵感,某次考后的放松,某段并肩作战的时光。

“我们从哪里开始?”林自由问。

“市中心。”林山说,“先把路网铺好。”

两人开始操作。键盘的敲击声不再是写代码时的急促,而是变得舒缓而有节奏。放置方块, 拆除方块,调整角度,铺设照明。

在这个虚拟的世界里,没有分数的压力,没有排名的焦虑。只有创造的快乐。

“你知道吗,”林自由忽然开口,眼睛盯着屏幕,“有时候我觉得,这个服务器比现实更真 实。”

“为什么?”

“因为在这里,付出就有回报。”林自由放下鼠标,转过头看着林山,“你放下一块方块,它就永远在那里。不会因为你状态不好就消失,不会因为出题人失误就扣分。” 林山沉默了。

他想起省选考场上的那一瞬间。想起那道动态规划题,想起自己手心的汗水,想起那一刻的 犹豫不决。

现实世界充满了不确定性。就像乌龙江的潮汐,有时平静,有时汹涌。

但在这个服务器里,他们是上帝。

“所以,”林自由继续说,“不管省选结果怎么样,这个城市都得建下去。这是我们的作品,谁也拿不走。”

林山点了点头,手指重新放在键盘上。

“嗯。建下去。”

屏幕里,夕阳西下,虚拟的城市被染成了金色。两个小小的角色站在高楼顶端,俯瞰着这片属于他们的土地。

本文为虚构文章!请勿与现实混淆!

晚上九点,宿舍 206。

林山躺在床上,手机屏幕亮着。洛谷的个人主页上,那个红色的名字“山中有林”依然醒目。

林自由在旁边,手里拿着平板,正在查看服务器的后台数据。

“今天在线人数多了不少。”林自由说,“看来我们的宣传起作用了。”

“那是自然。”林山笑了笑,“福州一中出品,必属精品。”

林自由:“不过小心R星告你。”

笑声过后,是一阵短暂的沉默。

明天,成绩就要公布了。

这个念头像悬在头顶的达摩克利斯之剑,让人无法完全放松。

“林山。”林自由忽然叫他的名字。

“嗯?”

“如果……"林自由顿了顿,“如果我进了省队,要去北京集训。你留在学校冲刺高考。你 会觉得孤单吗?”

林山愣了一下。

这个问题,他想过很多次。

竞赛之路,注定是一条分岔路。有人走向 NOI 的殿堂,有人走向高考的考场。曾经并肩作 战的伙伴,终将在某个路口挥手告别。

“不会。”林山认真地说,“因为我知道,你还会回来。”

“回来?”

“嗯。高考完,大学。到时候我们还能在一个群聊里,还能一起玩水林服务器。”林山翻了 个身,看着墙壁,“而且,就算你不回来,这个服务器也在。只要登录上去,就能看到你建的楼。”

脚的那段安静了一会儿。

“你说得对。”林自由的声音传来,带着几分释然,“路是分开的,但世界是连着的。”

“而且,”林山补充道,“就算你没进省队,我也不会笑话你。大不了我们一起拼高考,考 到同一个大学去。”

“撒女内。”林自由笑骂道,“乌鸦嘴。我肯定能进。”

“那我也肯定能考好。”林山不服输。

“那就这么说定了。”

“说定了。”

窗外,福州的夜色渐浓。远处的橘园洲大桥上,车流如织,灯光连成一条蜿蜒的光带。

这座城市的夜晚,容纳了无数少年的梦想。有人在为竞赛欢呼,有人在为高考挑灯。

林山闭上眼睛,脑海里浮现出水林服务器里的那座摩天大楼。那是他们一起设计的,还没封顶,但骨架已经建成。

就像他们的青春。

尚未完成,但已足够壮观。

明天,成绩会出来。无论结果如何,太阳都会照常升起,闽江的潮水会继续涨落。

而他们,会继续走下去。

在这个潮湿而温暖的春夜,两个少年在各自的床铺上,带着对未来的期许,缓缓入睡。 梦里,那座国际化大都市灯火辉煌,等待着他们的归来。

第三章:榜单之上

本文为虚构文章!请勿与现实混淆!

四月五日下午两点整。

福州一中高二(2)班的信息技术教室里,键盘敲击声此起彼伏。屏幕上显示的是 C++ 基础教程,但大部分学生的注意力并不在代码上。

今天是省选成绩公布的日子。

虽然参赛的主力是高三学生,但竞赛圈的消息从来不会隔绝。高二的孩子们大多接触过信息 学,有的甚至已经在为明年的 NOIP 做准备。他们知道,今天下午,CCF 官网会更新那份 决定命运的名单。

林山和林自由并没有在这间教室里(况且这节课高三(2)班是社团课)。作为高三竞赛生, 他们拥有独立的信息社团电脑室(配置非常高,还有独立Wifi),位于实验楼的四层,隔着 一条走廊就能听到楼下高一机房的喧闹。

训练室里只有他们两个和其他一两个人。教练去开会了,临走前说:“成绩出来我会通知你 们。”

但没人能真的等通知。

林山坐在靠窗的位置,手指悬在鼠标左键上,屏幕上是 CCF 的登录界面。林自由坐在他旁 边,手里转着一支笔,目光盯着墙上的挂钟。

秒针跳动。 两点零一分。

“刷新吗?”林山问,声音有些干涩。 “再等一分钟。”林自由说,“服务器可能会崩。”

两点零二分。

林山点击了刷新键。

页面卡顿了一下,转圈圈的图标持续了整整五秒。这五秒钟里,林山感觉自己的心脏被一只 无形的手攥住了。他想起省选考场上的那道动态规划,想起昨晚梦里那座还没封顶的摩天大 楼,想起 206 宿舍潮湿的夜风。

页面加载出来了。

一份 PDF 文件挂在公告栏最上方:《2025年福建省信息学奥林匹克竞赛省选成绩公示》。

本文为虚构文章!请勿与现实混淆!

楼下忽然传来一阵欢呼声。

高二(2)班那边炸锅了。有人拍桌子,有人尖叫,有人在喷射c语言,甚至有椅子倒地的 声音。显然,那边的学生也看到了名单。

“出来了!”林自由站起身,快步走到林山身后,“快打开。” 林山双击文件。

阅读器启动。长长的表格缓缓展开。

全省参赛人数几百人,最终计入排名的只有一部分。他们的目光直接拉到一堆说明的后面, 寻找福州一中的名字。

“林自由。”林山念出了第一个名字。

全省第五名。 省选第一天 270,第二天 270。总分 540。[就三道题目,满分300]

“稳了。”林自由的声音很平静,听不出太多波澜,但林山看到他握笔的手指微微收紧了一下。540 分,在这个年份,绝对是一个安全的省队名额。

“找我。”林山咽了口唾沫。

目光下移。

全省第十三名。

省选第一天 260,第二天267分,总分 527 分。

“527……"林山重复了一遍这个数字,“第十三名。”

福建省队名额是 16 人。

他进了。

那一刻,并没有想象中的狂喜。林山感觉整个人像是被抽走了力气,软软地靠在椅背上。过 去半年的焦虑、深夜的刷题、考场上的手心汗,仿佛都随着这个数字尘埃落定。

“恭喜。”林自由拍了拍他的肩膀,“206 宿舍双喜临门。”

林山笑了笑,眼眶有些发热:“你也恭喜。”

本文为虚构文章!请勿与现实混淆!

“等等。”林自由忽然皱眉,鼠标滚轮向上滚动,“前面的人是谁?”

林山凑过去。

名单的最顶端,几个高分格外刺眼。

第二名:金思颖,厦门一中,总分 552 分。

第三名:蒋兴,师大附中,总分 550 分。

“老蒋可以啊。”林山说,“第一天拿了满分?”

“看来他那句‘考场见’不是客套话。”林自由淡淡道,“金思颖也发挥稳定,厦门一中这 次势头很猛。”

“那第一呢?”林山问,“谁拿了第一?”

鼠标停留在榜首。

姓名:陈智清。

学校:中国人民大学附属中学。

总分:565 分。

备注:跨省调剂名额

训练室里安静了三秒。

“人大附中?”林山瞪大了眼睛,“北京的?”

林自由说:“跨省调剂名额。”

林山想起来了。CCF有个政策,如果某省名额未满,允许其他省的选手申请跨省调剂。但这种情况极其罕见,通常是因为某省的生源质量达不到要求,才会从其他省调入选手。

福建——有省师大附中支撑的全国较强的竞赛省份之一——需要跨省调剂?

林山咽了口唾沫。他们还在为 527 分庆幸的时候,已经有人把天花板顶到了这个高度。

“难怪。”林自由忽然笑了,“怪不得这次分数线这么高。有个大神在这里垫着,大家都得 拼命。”

“这算不算降维打击?”林山苦笑,“本来以为对手就在省内,结果来了个外援。”

“竞技体育,菜是原罪。”林自由关了 PDF 页面,“不管他是哪里的,反正名额是 16 个, 我们都在里面。他拿他的第一,我们进我们的省队。”

话虽这么说,但那个名字还是给两人带来了不小的冲击。原本以为只是省内高手的博弈,没 想到还有一个来自教育高地的“过客”。

本文为虚构文章!请勿与现实混淆!

楼下高二(2)班的学弟学妹们的喧闹声更大了。

训练室的门被敲响。一个高二的学弟探进头来,满脸兴奋:“山哥,自由哥,成绩出了!你 们进了吗?”

“进了。”林山站起身,走到门口,“你们吵什么?”

“那个第一名的!”学弟激动地挥舞着手机,“人大附中的!怎么跑福建来了?群里都炸 了!”

“知道了。”林自由走过来,递给学弟一瓶水,“别光顾着八卦,回去上课。要是下次省选 你们高二的被高一挤下来,那就丢人了。”

学弟吐了吐舌头,跑回去了。

林山关上门,重新坐回椅子上。

“527 分,第 13 名。”他看着自己的手,“本来以为悬了。”

“你第二天那道动态规划写得不错。”林自由说,“我当时看你状态就稳了。”

“你也不看看是谁教的。”林山翻了个白眼,“昨晚还在说红石电路。”

提到这个,两人都笑了。

“水林服务器怎么办?”林山问,“接下来要集训了,恐怕没多少时间上线。”

“让别人先建呗。”林自由说,“城市已经建得差不多了。等我们从集训回来,再一起搞扩建。”

“要是没进省队呢?”林山忽然问,“我是说如果。”

“没有如果。”林自由打断他,“现在事实就是,我们都在名单上。福州一中,两个名额, 还有一个高一的同学。”

林山点点头。

是啊,没有如果了。

那个曾经让他夜不能寐的分数,现在变成了一个确定的数字。那个曾经让他担心会走散的朋 友,现在依然坐在身边。

本文为虚构文章!请勿与现实混淆!

下午四点,教练回来了。

看到两人桌上的屏幕,教练愣了一下:“你们知道了?”

“知道了。”林山把成绩单打印出来,递过去,“老师,我们进了。”

教练接过纸,扫了一眼,脸上露出了如释重负的笑容:“好啊,好啊。福州一中今年不错, 三个进省队。林自由第五,林山第十三……陈智清那个不算我们学校啊,他是跨省调剂的。”

“老师,那个陈智清到底什么来头?”林山忍不住问。

“陈智清就是人大附中信息学竞赛队当之无愧的第一人。NOIP全省第一,冬令营全国第三,北大集训营最优营员。所有人都说,他是今年国家队最有力的竞争者之一。”

“明白了。”林自由说。

“行了,今天给你们放个假。”教练挥挥手,“回去收拾收拾,准备集训。还有,别光顾着 高兴,文化课别落下太多。”

走出训练室,走廊里的阳光正好。

福州的四月,木棉花开了,红艳艳地挂在枝头。

林山和林自由并肩走下楼梯。路过高二(2)班时,里面的学生还在讨论着那个北京来的第 一名。

“你说,集训的时候能见到他吗?”林山问。

“大概率能。”林自由说,“全国集训就那几十个人。”

“到时候得好好切磋切磋。”林山握了握拳,“看看是福建的山水硬,还是北京的题硬。”

“行。”林自由笑了,“到时候我帮你搭个红石机关坑他。”

两人走出教学楼,迎面吹来闽江方向的风。

手机震动了一下。是竞赛群的消息。

蒋兴:“恭喜各位,省队见。”

金思颖:“集训营见。”

还有一个陌生的 ID 添加好友申请:陈智清。备注写着:“福建的选手很强,期待交手。”

林山看着那个申请,愣了一下,然后点击了通过。

“看来躲不掉了。”林山说。

“那就迎上去。”林自由说,“就像在游戏里一样,不管多强的 BOSS,总有通关的方法。”

“走吧。”

“去哪?”

“回 206 宿舍。”林山说,“把那个城市的最后一块方块搭完。算是给高中时代留个纪念。”

“好。”

夕阳把两人的影子拉得很长,交叠在一起,通向宿舍楼的方向。

榜单上的名字已经定格,但属于他们的故事,还在继续编写。从福州到北京,从省选到 NOI,

这条路还很长。

但至少今天,他们可以睡个安稳觉了。

第四章:集训伊始

本文为虚构文章!请勿与现实混淆!

四月三日,早上七点四十。

福州的春雨总是来得悄无声息。林山走出福州一中的校门时,裤脚已经被路边的积水打湿了 一片。他撑开伞,侧头看向身边的林自由。

“今天第一天,别迟到。”林自由看了一眼手表,步伐迈得比平时大了些。

“知道。”林山紧了紧背包带子,“听说这次是三省联训?”

“江西、福建、台湾。”林自由纠正道,“师大附中这次承办,场面应该不小。”

两人并肩走向地铁站。清晨的福州还未完全苏醒,但通往师大附中的路上,已经能看到不少 穿着各色校服的少年。有的胸前挂着集训证,有的手里拿着打印好的错题本。空气里弥漫着 一种特有的紧张感,那是竞赛生之间无需言语就能感知的磁场。

“不知道这次教练是谁。”林山说。

“听说是方老师。”林自由答道,“是个狠角色,带出过金牌的。”

地铁车厢里人不多,但角落里的几个学生都在背单词或者看手机里的算法笔记。林山找了个 位置坐下,打开手机,洛谷的消息提示闪了一下。

好友“吴水不水”上线了。

林山愣了一下。这个 ID 他很熟悉,洛谷红名用户,全省排名前列的常客。他知道,这个 ID 背后的主人,是那个小时候一起在学校里打排球的同学。

“你也去集训?”林山发消息。

“废话,第十四名,倒数第二,高2分。”对方秒回,“你在哪?”

“路上。马上到师大。”

“巧了,我也在车上。回头机房见。”

林山收起手机,看向窗外。车站里,稀稀拉拉的人们拎着湿漉漉的伞,有的拖着行李箱,一 副疲惫样。省选已经结束,但真正的挑战才刚刚开始。集训营,是通往全国赛的最后一段阶 梯,也是筛选与淘汰最残酷的战场。

本文为虚构文章!请勿与现实混淆!

八点五十,师大附中。

楼道里已经挤满了人。指示牌清晰地标注着各队的机房位置:江西队 501,台湾队 502, 福建队 601。

林山和林自由走上六楼。601 机房的门敞开着,里面整齐排列着五十台电脑,空气中弥漫 着新机器的味道。门口站着几个志愿者,正在核对名单。

“福州一中,林山,13 名。”志愿者核对后点头,“进去吧,座位在后排。”

“林自由,5 名。”志愿者抬头看了一眼,眼神里多了几分敬意,“前排靠窗的位置留给你。”

林自由摆摆手:“我和他坐一起。”

志愿者愣了一下,随即笑了笑:“行,那你们坐 23、24 号桌。”

两人走到后排坐下。林山刚开机,就听到身后传来一个熟悉的声音。

“哟,这不是林山吗?”

他转过头,看到一个穿着福州三中校服的男生正站在过道里,手里转着一支笔,脸上带着几 分戏谑的笑意。

“吴水?”林山有些意外,“真是你?”

“不然呢?”吴水走过来,拍了拍林山的肩膀,“小时候你抢我的魔方,现在省选又抢我的 名额。第十三名和第十四名,咱俩这缘分也是没谁了。”

“那是实力说话。”林山笑道,“洛谷 ID 叫‘吴水不水’,现在看来确实不水。”

“彼此彼此。”吴水指了指自己的胸口,“三中就我一个进省队的,压力山大。以后多关照。”

“关照不敢,互相折磨吧。”林自由在一旁插话,伸手和吴水握了握,“林自由,一中。”

“久仰。”吴水点点头,“第五名的大佬。以后粗大腿可得让我抱一下。”

三人相视一笑。竞赛圈很小,小到有时候转角就能遇到童年玩伴;竞赛圈也很大,大到每个 人都要独自面对屏幕背后的孤独。

本文为虚构文章!请勿与现实混淆!

九点整,集训正式开始。

方老师走进机房。他是个四十岁左右的中年男人,穿着灰色的夹克,手里拿着一个保温杯。 眼神扫过全场,原本嘈杂的机房瞬间安静下来。

“欢迎参加三省联训。”方老师的声音不大,但穿透力极强,“我知道你们都是各校的精英。 但在这里,精英是最不值钱的东西。”

他打开投影仪,屏幕上显示的是这次省选的试题分析。

“第一天的内容,复盘省选题目。”方老师敲了敲黑板,“别以为考完了就没事了。省选的 题,你们很多人只是‘做出来’,而不是‘做完美’。”

林山挺直了腰背。这正是他担心的地方。省选第三题,他虽然写出了动态 DP,但常数优化 做得不够好,在大数据下可能会超时。

方老师开始讲解第一题。虽然是模拟,但他指出了几个容易被忽略的边界条件,以及如何处理输入输出的效率问题。林山听得频频点头,这些都是他在考场上未曾细想的细节。

接着是第二题,图论。

“这道最小割,很多人建模建复杂了。”方老师在白板上画了一个二分图,“其实只需要把 时间维度拆开,就能转化成标准模型。”

林山转头看了一眼林自由。林自由正盯着屏幕,手指在桌面上轻轻敲击,似乎在模拟代码的 运行流程。

“第三题,字符串。”方老师看向后排,“后缀自动机。我知道你们很多人是现学的。但我 要告诉你们,在国赛级别,这只是基础。”

林山心里咯噔一下。他想起省选考前夜,林自由说过“后缀自动机太他妈吃细节”。现在看 来,细节才是决定上限的关键。

两个小时的讲解,没有人玩手机,没有人走神。键盘的敲击声偶尔响起,那是有人在记录笔 记。

本文为虚构文章!请勿与现实混淆!

中午十二点,下课铃响。

方老师合上教案:“下午两点继续。中午在学校食堂吃饭,凭餐券。”

人群涌出机房。林山、林自由和吴水结伴走向食堂。路上碰到了高一的江浩,第十名,一个 人低着头看着手机走路。

“江浩。”林山叫住他,“一起吃饭?”

江浩抬起头,看到是林山,有些受宠若惊:“山哥,自由哥。”

“别叫哥,叫名字就行。”林自由笑着说,“高一就能进省队,排名还比我高,你才是大佬。”

“运气好。”江浩不好意思地挠挠头。

食堂里人声鼎沸。各省的队伍聚集在不同的区域,福建队占据了东侧的大片位置。林山端着 餐盘,找了个空位坐下。餐盘里是标准的两荤一素,味道中规中矩。

“晚上住哪?”吴水一边吃饭一边问,“附中宿舍好像不够分。”

“我们住本校。”林山说,“福州一中离这儿不远,地铁1号线。坐到东街口就行。”

“我也这么想。”林自由放下筷子,“宿舍太挤,而且晚上想讨论题目不方便。不如回自己 学校,机房还能用。而且笔记本电脑不会一直搬来搬去。”

“那我也回三中。”吴水说,“不过我得晚点,得先把今晚的住宿手续退了。”

“江浩呢?”林山看向旁边的高一学弟。

“我……我也回一中。”江浩小声说,“教练说让我们几个高一的住一起,方便管理。”

“那就行了。”林自由总结道,“晚上回本校机房,继续刷今天的题。”

“你真是卷王。”吴水吐槽道,“刚考完省选,又要刷。”

“不是刷,是补漏。”林自由认真地说,“方老师今天讲的那个常数优化,我还没想明白。”

吴水叹了口气:“行吧,舍命陪君子。晚上我也过去,一中机房借我个位置?”

“随便坐。”林山笑道,“只要别把我们电源拔了就行。”

本文为虚构文章!请勿与现实混淆!

下午一点五十,四个人决定去烟台山逛逛。

雨停了,云层裂开一道缝隙,阳光洒在湿漉漉的街道上。林山和林自由走在前面,吴水和江 浩跟在后面。

“你觉得这次集训,能学到什么?”林山忽然问。

“不知道。”林自由看着前方的路口,“但至少知道差距在哪。”

“陈智清那种级别的,我们追得上吗?”林山想起那个来自人大附中的第一名。

“追不上就不追了。”林自由停下脚步,转头看着林山,“竞赛不是短跑,是马拉松。他跑 他的,我们跑我们的。只要比昨天的自己快,就够了。”

林山愣了一下,随即笑了。

“你说得对。”

“而且,”林自由指了指不远处的师大附中校门,“你看,那里汇聚了三省最聪明的大脑。 能和他们坐在一起,本身就是一种荣耀。”

校门口,江西队的学生正在排队入场,台湾队的旗帜在风中飘扬。不同口音的交流声混杂在 一起,形成了一种独特的共鸣。

林山深吸了一口气。空气里带着雨后泥土的清新。

“走吧。”他说,“下午还要讲数据结构。”

“嗯。”

四人走进校园,身影消失在信息楼的阴影里。

601 机房的灯再次亮起。屏幕上的代码行开始跳动,像是一座座正在搭建的城池。

集训的日子会很苦,会比省选前夜更漫长。但林山知道,身边有林自由,有吴水,有江浩, 还有那个尚未建成的大都市服务器在等着他们。

这条路,依然值得走下去。

下午两点整,方老师准时走上讲台。

“打开题目包。”他说,“今天我们讲树套树。”

键盘声再次响起,密集而坚定,像是一场没有终点的雨,滋润着这群少年的梦想。

第五章:难度溢出

本文为虚构文章!请勿与现实混淆!

四月四日,早上七点二十。

福州的早高峰来得比预想中更早。林山、林自由和吴水站在福州一中校门口,招手拦下了一 辆公交出租公司的一台黄色大众 ID.4 新能源出租车。

车门关上,外界的喧嚣瞬间被隔绝。电动车特有的静谧感让车厢内显得有些过分安静。林山 坐在后排中间,看着中控屏上显示的剩余的302km续航里程,忽然觉得这和竞赛的状态很 像——你永远不知道当前的电量能不能支撑你跑到终点。

“这车提速挺快。”吴水坐在靠窗的位置,手指敲着膝盖,“就像邢江昨天说的,数据范围 加强之后,暴力算法瞬间就 TLE 了。比这车加速还快。”

“今天真是邢江讲?”林自由问,目光投向窗外飞逝的街景,“昨天不是说方老师负责全程 的省选题目讲解吗?”

“临时换的。”吴水耸耸肩,“群里消息炸了,说邢江是刚从国家队集训回来的大佬,专门 来讲‘加强版’省选题。”

“加强版。”林山咀嚼着这个词,心里隐隐有些不安,“省选题还不够强吗?”

“对于你我来说够了,对于想要拿金牌的人来说,不够。”林自由淡淡地说,“听说这次三 省联训,江西那边有几个变态级的选手,福建队要是太弱,面子上挂不住。”

出租车在师大附中门口停下。三人下车,付钱,扫码。ID.4 无声地滑入一坨车流中, 留下淡淡的轮胎摩擦声。

林山抬头看了看二号楼。六楼的窗户里已经透出灯光,那是早到的选手在预热机器。 “走吧。”林自由说,“不管是谁讲,代码还得自己写。”

本文为虚构文章!请勿与现实混淆!

八点五十,601 机房。

气氛比昨天凝重了许多。原本分散坐着的福建队选手,今天不自觉地往中间靠拢,仿佛这样能获得更多的安全感。

讲台上站着一个陌生的男人。三十岁出头,穿着黑色的冲锋衣,手里没拿保温杯,只有一支 翻页笔。

“我是邢江。”他在白板上写下这两个字,笔锋锐利,“昨天的方老师讲得太温和了。今天 我来,只讲一件事——如何在极端数据下生存。”

投影仪亮起,屏幕上显示的确实是昨天的省选题目,但数据范围那一栏被标红加粗了。

“原题 N 是 10 的 5 次方,今天改成 10 的 6 次方。”邢江的声音没有起伏,“原题内 存限制 512MB,今天改成 128MB。原题时间 5 秒,今天改成 1 秒。”

机房里响起一片倒吸冷气的声音。

林山感觉自己的心脏被捏了一下。常数优化?卡内存?这已经不是算法正确性的问题了,这 是要把代码榨干到每一字节的节奏。

“第一题,线段树合并。”邢江点击鼠标,“昨天方老师讲的做法,在今天的数据下会爆内 存。你们有十分钟时间思考怎么优化。”

十分钟。

林山盯着屏幕,脑海里飞速运转。普通线段树节点太多,动态开点也不行……难道要用权值 线段树?或者是离线处理?

他转头看向林自由。林自由正皱着眉,手指在桌面上无意识地画着树状结构。吴水则在疯狂 翻着之前的笔记,嘴里念念有词。

“时间到。”邢江不等任何人举手,直接开始讲解,“正解是启发式合并配合内存池回收。”

键盘声响起。这次不是记录笔记,而是大部分人试图跟上邢江的思路。但太快了。邢江的讲 解跳跃性极强,默认所有人都掌握了所有的高级数据结构技巧。

林山写到一半,卡住了。内存池的指针该怎么维护?他昨天的代码里根本没有考虑过回收机 制。

“不懂?”邢江扫视全场,“不懂就对了。省选只是起点,国赛才是战场。这点难度都接受 不了,趁早回去高考。”

这话很刺耳,但没人反驳。在这个机房里,实力是唯一的语言。

本文为虚构文章!请勿与现实混淆!

中午十二点,四楼礼堂。

因为食堂座位紧张,集训组临时把四楼礼堂开放为午餐区。林山三人端着盒饭,找了个角落 坐下。

礼堂里弥漫着饭菜的味道和低声的抱怨。

“他妈的,这哪是集训,这是劝退吧。”吴水扒了一口饭,愤愤不平,“那个内存池,我连 听都没听过。”

“听过也不一定写得出来,这题目他妈的难得要死。”林自由冷静地分析,“邢江的目的是 筛选。他在测试我们的上限在哪里。”

“上限?”林山苦笑,“我他妈都觉得我今天已经到底线了。”

“福建队这次压力很大啊。”吴水压低声音,“听说江西队那边有个初二的小孩,昨天下午 就把三道题全 AC 了。台湾队那边也有几个搞过 IOI 的。”

林山沉默了。他想起榜单上那个来自人大附中的陈智清。外省的高手像潮水一样涌来,而他 们只能在原地筑堤。

“那你打算怎么办?”林山问吴水。

“能怎么办?硬扛。”吴水把盒饭里的不知道谁装多的一个鸡腿夹给林山,“多吃点,下午 还要受虐。”

“你呢,自由?”林山看向林自由。

林自由放下筷子,看着礼堂穹顶的灯光:“我在想,有没有必要完全跟着他的节奏走。如果基础不牢,讲再多的优化也是空中楼阁。”

“所以?”

“所以下午我打算按自己的方式来。”林自由眼里闪过一丝狡黠,“听不懂就不听了。”

林山和吴水对视一眼,都看到了对方眼里的惊讶。在集训营公然“翘课”,这需要极大的底气。

“算我一个。”吴水说,“反正听了也懂个半懂,不如回去刷模板。”

“那我也……"林山犹豫了一下,“我也跟你们。”

本文为虚构文章!请勿与现实混淆!

下午两点,601 机房。

邢江准时出现在讲台上,手里拿着一道新的题目:“下午讲图论的复杂模型构建……"

他的话还没说完,机房里的键盘声已经变了调。

原本整齐的敲击声变得杂乱无章。前排的几个厦门选手还在认真记笔记,但后排的福州和其 他八闽城市的选手,很多人已经切出了屏幕。

林山坐在 23 号位,屏幕左上角是洛谷的界面,右上角是 Visual Studio Code。

他没有听邢江讲什么“最小树形图”,而是打开了一道昨天没做出来的省选原题。既然优化 听不懂,那就先把基础打牢。

“你真敢啊。”吴水坐在斜后方,发消息过来。

“反正老师也顾不上我们。”林山回复,“你看前排,都听傻了。”

确实,前排有几个选手眼神空洞,显然已经跟不上邢江的语速。

林自由则更过分。他直接进入了水林服务器。

“密码,说好的刷题呢?”林山震惊地发消息。

“劳逸结合。”林自由回复,“邢江讲的东西太抽象,我需要一点具体的反馈。搭个红石电 路,逻辑是一样的。”

“我草,这么勇?”

“......你之前不也搞过,这只是抄你的做法而已”林自由说。

渐渐地,机房里形成了一种奇异的默契。讲台上的邢江依然在激情澎湃地讲解着复杂模型, 而台下的学生们则各自寻找着适合自己的生存方式。

有人在洛谷上刷着动态规划的专项练习,有人在调试昨天没过的代码,还有人像林自由一样, 偷偷打开了游戏。

这不是叛逆,而是一种自救。当难度曲线超过了承受阈值,强行跟随只会导致崩溃。

林山敲下最后一行代码,编译,通过。

他抬起头,看了一眼讲台。邢江似乎察觉到了台下的异样,但他没有停顿,也没有批评,只 是加快了语速,仿佛要把所有的知识硬塞进这群少年的脑子里。

本文为虚构文章!请勿与现实混淆!

下午五点,集训结束。

走出师大附中的时候,夕阳已经把云层染成了紫红色。林山伸了个懒腰,感觉脖子僵硬得像 块石头。

“晚上去哪?”吴水问,“回一中?”

“嗯。”林自由说,“今晚水林服务器开放960格×960格的新区域。”

“什么区域?”

“工业区。”林自由笑了笑,“既然白天讲了那么多优化和效率,晚上我们就在游戏里搞搞 自动化生产。”

林山笑了。这很符合林自由的风格——把竞赛的逻辑带到游戏里,又把游戏的放松带回竞赛。

三人走到地铁站。晚高峰的人群拥挤不堪,但他们的脚步却很轻快。

“今天其实挺收获的。”林山忽然说。

“收获什么?”吴水挑眉,“收获了一堆听不懂的理论?”

“收获了知道自己哪里不懂。”林山认真地说,“邢江虽然讲得难,但至少让我看到了差距。 如果不来这一趟,我可能还觉得自己挺厉害的。”

吴水沉默了一会儿,点点头:“也是。知道自己菜,才能变强。”

“而且,”林自由插话道,“不管老师是谁,不管题目多难,最后代码还是得自己写。路还 是得自己走。”

地铁进站的风吹过来,带着地下特有的尘土味。

林山看着隧道深处驶来的灯光,忽然想起昨天邢江说的话:“省选只是起点。”

是的,起点。

今天的听不懂,今天的“翘课”,今天的迷茫,都是起点的一部分。

“晚上几点上线?”林山问。

“八点。”林自由说,“别迟到,工业区的第一条流水线需要三个人一起调试。”

“行。”

“我也来。”吴水说,“虽然我红石技术不行,但可以负责挖矿。”

三人相视而笑。

车厢门打开,他们汇入人流。在这个拥挤的城市地下,三个少年带着各自的疲惫与梦想,驶 向不同的站点,却又在同一个虚拟世界里重逢。

今晚的水林服务器,灯火通明。

而明天的集训,无论谁来,无论多难,他们都已经准备好了。

因为他们知道,无论代码多么复杂,无论生活多么困难,只要逻辑还在,只要伙伴还在,就没有搭建不起来的城市。

地铁呼啸着驶入黑暗,奔向光明的下一站。

第六章:“那咋了”

本文为虚构文章!请勿与现实混淆!

四月五日,早上八点四十。

福州的春雨似乎没有停歇的意思。林山走出地铁一号线站台时,伞面上已经积了一层细密的水珠。他抖了抖伞,和林自由、吴水并肩走向师大附中的信息楼。

今天是集训的第三天。

经过昨天邢江的“难度溢出”洗礼,三人的精神状态都有些微妙。既没有被完全打垮,但也绝对谈不上轻松。那种被高强度知识轰炸后的疲惫感,像是一层洗不掉的灰,蒙在心头。

“听说今天换老师了。”吴水走在中间,手里捏着一盒还没开封的牛奶,“是个大学生,湖南来的。”

“大学生?”林自由挑眉,“集训营请大学生来讲课?”

“说是保送清华的学长。”吴水吸了一口牛奶,“叫什么姜金。”

“姜金。”林山默念了一遍这个名字,“听起来挺硬核。”

“硬不硬核,上课才知道。”林自由推开信息楼的大门,“希望别再像昨天那样,讲得我们怀疑人生。”

三人走上六楼。601 机房里已经坐了一半人。江西队的选手大多神色平静,台湾队的几个学生在低声交流,而福建队这边,气氛明显有些躁动。

林山回到 23 号座位,开机。屏幕亮起的瞬间,他看到桌面上多了一个文件夹,名为《Day3_训练集》。

点开。

里面的题目列表让他倒吸一口凉气。

洛谷 P4482,NOI 2018 屠龙勇士。 洛谷 P5150,CTSC 2007 数据备份。 洛谷 P3826,NOI 2017 蚯蚓。

“我草,这是给人做的?”吴水的声音从斜后方传来,带着难以置信的颤抖,“这都是 NOI 正赛或者 CTSC 的题啊!”

林自由没说话,只是默默打开了第一题的题干。他的眉头渐渐皱起,手指在桌面上轻轻敲击,那是他思考时的习惯动作。

本文为虚构文章!请勿与现实混淆!

九点整,姜金走进机房。

和之前的方老师、邢江不同,姜金看起来很年轻。二十出头的样子,穿着件灰色的连帽卫衣,牛仔裤,脚踩一双磨损严重的运动鞋。手里没拿教案,只有一台笔记本电脑。

“早。”他走到讲台上,声音带着明显的湖南口音,“我是姜金。今天的课,很简单。”

他指了指屏幕上的文件夹,“把这些题做了。每题三个小时,下午五点前提交。”

机房里瞬间炸锅。

“老师,这太难了吧!” “这是给省队选手做的吗?这是给国家队做的吧!” “七天集训,前两天讲省选,今天直接上 NOI?”

姜金似乎早预料到这种反应。他双手插在裤兜里,身体微微后仰,脸上没什么表情。

“难吗?”他问。

“难!”底下异口同声。

“那咋了。”姜金淡淡地说。

这三个字像一颗石子投入湖面,激起了更大的涟漪。

“老师,我们基础还没打牢……"有人试图争取。

“那咋了。”姜金重复了一遍,“竞赛就是这样的。你觉得自己没准备好,对手也不会等你准备好。国赛的时候,题目只会比这更难。”

林山愣了一下。

这句话很糙,但莫名地戳中了他。

是啊,那咋了。

难就能不做吗?难就能放弃吗?省选已经结束了,站在这里的人,哪一个不是过了关斩了将的?如果连这几道题都面对不了,怎么去北京面对全国的顶尖高手?

“开始吧。”姜金坐下,打开自己的电脑,“有问题随时问,但我不会告诉你们正解。思路自己悟。”

本文为虚构文章!请勿与现实混淆!

中午十二点,四楼礼堂。

午餐时间,福建队的选手们聚集在这里。气氛比昨天低沉得多。昨天的抱怨是针对邢江的“听不懂”,今天的抱怨则是针对姜金的“不可能”。

“我靠。我觉得邢江都算好的了。”吴水把餐盘里的青菜拨到一边,愤愤不平,“邢江至少还讲思路,姜金直接扔题让我们自生自灭。”

“这就是放养式训练。”林自由拿着筷子,却没怎么动,“逼我们自己查资料,自己推导。”

“可时间是有限的啊。”江浩坐在旁边,脸色有些苍白,“那道屠龙勇士,光读懂题意就花了我将近一个小时。”

“读不懂就硬读。”林山说,“姜金的意思不就是这个吗?”

“话是这么说……"吴水叹了口气,“但那句‘那咋了’真的太气人了。我差点就在机房里跟他吵起来。”

“那,吵赢了能加分吗?”林自由反问。

吴水语塞。

“其实我觉得,他说的没错。”林山低头扒了一口饭,“我们太习惯于有人喂饭了。老师讲,我们听,然后做题。但到了最高水平的竞技,没人会告诉你该怎么走。”

“你是被洗脑了吧。”吴水吐槽道。

“漏,漏,漏。不是洗脑,是现实。”林山放下拌了点水泥的筷子,“你们想想,陈智清那个级别的人,他们会等着老师来讲题吗?他们早就自己把那些题刷烂了。”

提到陈智清,大家都沉默了。

那个来自人大附中的第一名,像一座高山横亘在所有人心头。

“所以,”林自由忽然开口,“下午别抱怨了。既然他说‘那咋了’,那我们就做给他看。”

“怎么做?硬做?”吴水问。

“硬做。”林自由眼神里闪过一丝锐利,“哪怕只能拿暴力分,也要把代码写出来。不能让他觉得我们福建队是一群只会抱怨的孩子。”

林山看着林自由,忽然笑了。

“行,那就硬做。”

“算我一个。”吴水把青菜塞进嘴里,“大不了今晚通宵查题解。”

“别通宵。”林自由说,“晚上还要回学校。水林服务器今晚有活动。”

“都这时候了还想着游戏。”吴水翻了个白眼,但嘴角却扬了起来。

本文为虚构文章!请勿与现实混淆!

下午一点五十,601 机房。

姜金已经坐在讲台旁,手里捧着一杯奶茶,正在看手机。见学生们陆续回来,他抬头扫了一眼,没说话。

林山坐回 23 号位。

屏幕上的代码编辑器依旧空白。那道屠龙勇士的题意依然复杂,涉及平衡树、扩展中国剩余定理等多个知识点。

他深吸一口气,不再去想“这题太难”,而是开始拆解问题。

第一步,模拟攻击过程。 第二步,维护武器攻击力。 第三步,求解同余方程。

虽然不会写平衡树,但可以用 set 代替。虽然不会扩展 CRT,但可以先写个暴力 gcd 试试。

键盘声响起。

这次不再是之前的浮躁,而是一种沉静的节奏。机房里没有人说话,只有键盘敲击声和鼠标点击声。偶尔有人站起来去接水,脚步都放得很轻。

姜金站起身,在过道里巡视。

走到林山身后时,他停了一下。

“用 set 代替平衡树?”姜金问。

“嗯。”林山没回头,“常数大一点,但好写。”

“对啊,那咋了。”姜金笑着说,“能过就行。”

林山手指顿了一下,随即继续敲击。

“能过就行。”他默念了一遍。

是啊,那咋了。

方法笨一点,那咋了。

时间长一点,那咋了。

只要最后能 AC,只要最后能解决问题,过程中的狼狈又算得了什么?

他转头看了一眼林自由。林自由的屏幕上已经布满了代码,似乎正在调试某个数据结构。吴水则在疯狂查阅资料,草稿纸上画满了公式。

每个人都在这句“那咋了”里,找到了自己的战斗方式。

本文为虚构文章!请勿与现实混淆!

下午五点,训练结束。

提交系统关闭。姜金站在讲台上,看了一眼后台的数据。

“今天没人 AK。”他说,“最高分是林自由,三道题过了两道,第三题拿了 80 分暴力。”

林自由面无表情,只是合上了电脑。

“林山,两道, 第三题50分,250分。”姜金继续念,“吴水,一道,第二题50分,150分……其他五六个惨不忍睹。”

他合上电脑,看着台下的学生们。

“是不是觉得我很变态?”

没人回答,但眼神说明了一切。

“我知道你们心里在骂我。”姜金笑了笑,那笑容里带着几分少年特有的桀骜,“但我想告诉你们,真正的强者,不是在顺境里跑得快,而是在逆境里不崩盘。”

“今天这些题,你们可能永远不会再在考场上遇到。但这种面对未知难题的心态,会陪你们走到最后。”

他背起包,走向门口。

“明天还是我讲。准备好被虐吧。”

门关上,机房里安静了几秒,随即爆发出一阵复杂的叹息声。

“这人……"吴水站起身,伸了个懒腰,“虽然气人,但好像有点道理。”

“走吧。”林自由说,“回学校。”

“还去水林服务器吗?”林山问。

“去。”林自由说,“今天被虐了一天,晚上得在游戏里找回点自信。”

“行。”

三人走出信息楼。外面的雨已经停了,夕阳穿透云层,将师大附中的红墙染成了金色。

路边停着一辆大众 ID.4 出租车,正是早上坐过的那辆的同款。

“要不还是坐这个?”吴水问。

“坐地铁吧。”林山说,“省钱。晚上还要买鱼丸,今天达道鱼丸打八折。”

“行,听你的。”

三人走向地铁站。路上,林山回头看了一眼信息楼六楼的窗户。

灯光已经亮起,那是留校刷题的选手在继续战斗。

“那咋了。”林山忽然说。

“什么?”林自由问。

“没什么。”林山笑了笑,“就是觉得,这句话其实挺有力量的。”

“是啊。”林自由点点头,“难又咋了。虐又咋了。只要还没结束,我们就还能打。”

地铁1号线列车进站的风吹过来,带着地下特有的凉意。

林山握紧了背包带子。

明天的训练会更难,后天的选拔会更残酷。北京的陈智清,厦门的金思颖,师大附中的蒋兴,还有那个神秘的姜金。

所有人都是一座山。

但那咋了。

山在那里,路就在脚下。

他们走进车厢,身影融入人流。在这个城市的地下脉络里,三个少年带着满身的疲惫与倔强,驶向属于他们的终点。

而那句“那咋了”,像是一枚印章,盖在了他们青春的答卷上。

不完美,但足够真实。

第七章:放松

本文为虚构文章!请勿与现实混淆!

四月六日,早上八点五十。

师大附中信息楼六楼,601 机房。

经过昨天姜金那轮“那咋了”的洗礼,福建队的选手们今天走进机房时,脚步都沉重了几分。林山跟在吴水身后,打了个哈欠,眼底挂着明显的黑眼圈。

“昨晚几点睡的?”吴水问。

“两点。”林山揉了揉太阳穴,“有道题我死活调不过去,最后只能暴力骗分。你呢?”

“差不多。”吴水坐下,开机,“自由呢?”

“他一点就睡了。”林山指了指前排,“他说既然不会,不如养足精神今天再战。”

林自由确实看起来精神不错。他坐在 24 号位,正转着一支笔,目光平静地盯着讲台。

九点整,姜金准时出现。

今天的他换了一件白色的 T 恤,看起来比昨天那件灰色卫衣更有朝气。手里依旧没拿教案,只有一台笔记本电脑。

“早。”姜金把电脑连上投影,“昨天虐得怎么样?”

机房里一片哀嚎。

“虐得好。”姜金笑了笑,露出一口白牙,“今天放松一下。”

这两个字像是一道赦免令,机房里的气氛瞬间松动了几分。连前排那几个一直紧绷着脸的江西选手都挺直了腰背。

“今天的题目,正常的 NOI 难度。”姜金点击鼠标,屏幕上弹出一个文件包,“没有加强版,没有极限数据,没有内存池。就是正常的联赛题。”

林山点开文件包。三道题。

第一题:模拟。复杂的字符串处理。 第二题:动态规划。状态转移方程比较隐蔽,但数据范围友好。 第三题:图论。标准的生成树计数。

“这……"吴水在后面小声嘀咕,“这是正常的 NOI 题?这简直是送分题啊。”

“别大意。”林自由头也没回,“姜金不会无缘无故放水。”

“也许是想让我们找回点自信。”林山说,“毕竟昨天被打击得太惨了。”

姜金似乎听到了下面的议论,他双手撑在讲台上,身体前倾:“别想太多。竞赛张弛有度才是常态。今天的目标很简单:把会做的做对,把能拿的分拿满。十点开始,下午四点结束。”

“还有,”他补充道,“这次允许上网查资料,允许交流思路,但不允许直接抄代码,也不允许抄题解。”

这下连林自由都愣了一下。允许交流?这在集训里可是稀罕事。

“老师,这是为什么?”有人举手问。

“因为今天不仅是做题。”姜金说,“也是测试你们的协作能力。省队不是一个人的战斗,是全国赛的代表队。有时候,队友的一句话,能省你半个小时。”

林山看了看身边的林自由,又看了看后面的吴水。

“那就来吧。”林自由说,“第一题我负责审题,你们看看第二题。”

本文为虚构文章!请勿与现实混淆!

十点整,训练正式开始。

机房里的键盘声再次响起,但这次的节奏明显轻快了许多。没有了昨天那种生死搏杀般的凝重,多了几分探讨和交流的氛围。

林山负责第二题动态规划。他在草稿纸上画了几笔状态转移图,很快找到了突破口。这是一道经典的轮廓线 DP,只需要处理好边界条件即可。

“自由,第一题有什么坑吗?”林山敲完代码,转头问。

“字符串匹配有个特殊情况,空串。”林自由头也没抬,“我已经处理了,你可以参考我的写法。”

“收到。”

后面的吴水也在第三题上取得了进展:“生成树计数可以用矩阵树定理,我写了个高斯消元,你们帮我看看常数会不会炸?”

“发群里。”林自由说。

三人通过Wechat共享文件,互相审查代码。这种协作效率极高,原本需要独自摸索半天的问题,在几句交流中迎刃而解。

姜金在过道里巡视,看到这一幕,微微点了点头,没说话。

时间一分一秒过去。

十一点二十分。

林山编译通过了第二题的大样例。他伸了个懒腰,准备提交。

就在鼠标点击“提交”按钮的瞬间,屏幕上的光标突然停住了。

不是那种程序运行的卡顿,而是整个系统的僵死。鼠标指针变成了一个蓝色的圆圈,转了两圈,然后彻底消失。

“怎么回事?”林山拍了拍主机箱。

没反应。

他抬头看向四周。

机房里响起了一片嘈杂声。

“我电脑死机了!”

“我也是!”

“网断了?”

“提交系统打不开!”

林山转头看向林自由。林自由的屏幕也定格在了代码界面,无论怎么敲击键盘都毫无反应。

“全体卡机?”吴水站了起来,声音里带着惊慌,“不会吧?”

确实,放眼望去,601 机房里五十台电脑,几乎在同一时间内失去了响应。有的屏幕变成了蓝屏,有的直接黑屏,有的则定格在了画面。

“怎么回事?”姜金走到讲台前,敲了敲麦克风,没声音。

他皱了皱眉,走到机房后方的服务器机柜前,打开柜门检查。

本文为虚构文章!请勿与现实混淆!

中午十二点,四楼礼堂。

因为机房故障,训练被迫中断。技术人员正在抢修,午餐时间提前了。

福建队的选手们聚集在礼堂,气氛比昨天还要复杂。昨天是被题目难住的郁闷,今天则是被硬件故障搞崩的无奈。

“这也太巧了吧。”吴水端着餐盘,一脸不可思议,“五十台电脑,同时卡机?”

“可能是网络风暴。”林自由分析道,“刚才我们所有人同时提交数据,本地 judging 服务器可能扛不住并发量,导致了局域网拥堵。”

“那也不能把客户端都搞死机啊。”林山说,“我的编译器都未响应了。”

“也许是病毒。”吴水猜测,“或者是哪个Gay写了个死循环广播包。”

“不管是什么原因,”林自由扒了一口饭,“今天的训练算是废了。”

“姜老师什么反应?”林山问。

“他在修服务器。”林自由说,“我看他挺淡定的。”

“我靠,淡定?”吴水冷笑,“换我早炸了。这可是省队集训,时间就是分数。”

“也许在他看来,”林自由放下筷子,“这也是比赛的一部分。”

“什么意思?”

“国赛现场就不会出意外吗?”林自由说,“停电、断网、机器故障,这些都是不可控因素。真正的强者,不仅要会做题,还要会处理意外。”

林山沉默了。

他想起昨天姜金的那句“那咋了”。

今天这情况,大概也能用那句来回怼。

“那咋了。”林山喃喃道。

“你他,说什么?”吴水没听清。

“没什么。”林山笑了笑,“吃饭吧。下午说不定还能继续。”

本文为虚构文章!请勿与现实混淆!

下午两点,601 机房。

技术人员终于修好了服务器。原来是局域网内的一台交换机过热导致的数据包丢失,进而引发了客户端的连锁反应。

姜金站在讲台上,看着重新亮起的屏幕,神色平静。

“耽误了两个小时。”他说,“训练时间顺延到晚上八点。”

底下响起一阵欢呼。

“别高兴得太早。”姜金抬手压了压,“虽然时间顺延,但题目难度不变。而且,因为这次故障,我要加一道附加题。”

“啊?”

“附加题不计分,但必须做。”姜金说,“题目是:写一个脚本,监控本地网络状态,一旦检测到拥堵,自动断开重连。”

“这是运维题啊!”有人抱怨。

“竞赛生不仅要会算法,还要会工具。”姜金淡淡地说,“今天的故障,暴露了你们对环境依赖的脆弱性。如果这是在 NOI 考场,你们难道等着老师来修电脑?”

林山愣了一下。

这话像是一记警钟,敲醒了沉浸在算法世界里的他们。

确实,他们习惯了完美的环境,习惯了稳定的评测机,习惯了老师安排好一切。但真正的战场,充满了不确定性。

“开始吧。”姜金说,“附加题做完,今天的训练才算结束。”

键盘声再次响起。

这次,除了算法代码,还多了许多系统调用、网络监控的脚本。

林山一边写代码,一边看了一眼林自由。林自由已经在写监控脚本了,手指飞舞,神情专注。

“自由。”林山小声叫了他一声。

“嗯?”

“你说得对。”林山说,“这也是比赛的一部分。”

林自由嘴角微微上扬:“那当然。水林服务器要是崩了,我们也得自己修,不是吗?”

“那是。”林山笑了,“今晚回去得检查下服务器日志。”

本文为虚构文章!请勿与现实混淆!

晚上八点,训练结束。

走出师大附中的时候,福州的夜空已经布满了星星。今天的故障虽然是个插曲,但却让所有人多了几分思考。

林山、林自由和吴水走在回家的路上。

“今晚还上线吗?”吴水问,“折腾了一天,累死了。”

“上线。”林自由说,“不过不建城市了。”

“那干嘛?”

“修bug。”林自由说,“姜金今天说得对,环境依赖太脆弱。我们得给水林服务器加个自动备份和监控机制。”

“行。”吴水点点头,“正好我也练练手。”

“江浩呢?”林山问。

“他先回去了。”林自由说,“高一的体力不如我们。”

三人走到地铁站。晚高峰已经过去,车厢里空荡荡的。

林山靠在车门上,看着窗外飞逝的灯光。

“姜金这个人,”林山忽然说,“虽然说话难听,但好像确实有点东西。”

“他是想让我们明白,”林自由说,“算法只是工具,解决问题的能力才是核心。无论是题目,还是电脑故障,亦或是生活中的意外。”

“那咋了。”吴水接了一句。

三人都笑了。

“那咋了。”林山重复了一遍,“是啊,卡机了又咋了。修好就是了。”

地铁离站,风吹过来,带着地下的凉意。

林山握紧手机,屏幕上显示着水林服务器的状态监控页面。一切正常,绿色的指示灯在闪烁。

那是他们共同构建的世界,稳定,坚固,无论外界如何变化,只要逻辑还在,它就不会崩塌。

“走吧。”林自由说,“回去 coding。”

“嗯。”

三人走出地铁站,身影融入福州的夜色中。

集训还在继续,挑战还在增加。但经过今天的意外,他们似乎多了一份从容。

因为我知道,无论代码多么复杂,无论生活多么困难,只要逻辑还在,只要伙伴还在,就没有搭建不起来的城市。

而那句“那咋了”,将成为他们面对未来所有意外的底气。

夜风吹过,闽江的水声隐约可闻。

属于他们的故事,还在继续编写。

第八章:亚太之巅

本文为虚构文章!请勿与现实混淆!

五月十五日,早上七点。

福州南站的高铁站台上,晨雾还未完全散去。福建代表队的队员们拖着行李箱,整齐地站在站台黄线内。空气中弥漫着淡淡的茶香和离别的气息。

林山站在队伍中间,手里捏着车票。目的地:北京南站。

“第一次去北京?”吴水凑过来,手里拿着两瓶矿泉水,递了一瓶给林山。

“去过,旅游。”林山接过水,“但这是第一次去比赛。”

“感觉不一样吧。”吴水拧开瓶盖,喝了一口,“听说这次 APIO 的考场设在人大附中附近,那可是陈智清的主场。”

提到陈智清,林山下意识地看向北京的方向。

“主场优势?”林自由不知何时走到了两人身后,声音低沉,“在代码面前,主场和客场没有区别。”

“也是。”吴水笑了笑,“不过有他带路,我们至少不会迷路。”

林山转头看向林自由。经过一个月的集训,林自由的眼神更加锐利了。姜金那句“那咋了”似乎真的刻进了他的骨子里,让他面对任何困难都多了一份从容。

“水林服务器昨晚备份了吗?”林山忽然问。

“自动备份了。”林自由挑眉,“怎么,担心我们回不来?”

“担心服务器崩了没人修。”林山 joked。

“崩了再说。”林自由拍了拍他的肩膀,“那咋了。”

三人相视一笑。

广播响起,列车进站。一列白色的复兴号动车组缓缓停稳,车门打开。福建队的队员们依次上车,走向属于他们的车厢。

这是一趟通往梦想的列车。窗外是飞逝的南方景色,湿润,翠绿。而前方,是干燥凛冽的北方,是竞争更激烈的战场。

APIO2025,亚洲与太平洋地区信息学奥林匹克竞赛。

这是 NOI 前的最后一次热身,也是检验各省实力的试金石。

本文为虚构文章!请勿与现实混淆!

五月十五日,晚上八点。

北京的气候比福州干燥得多。刚走出车站,林山就感觉喉咙有些发痒。

大巴车直接将他们送到了集训基地酒店。放下行李后,教练方老师召集大家开了个短会。

“明天的考试,大家放平心态。”方老师站在会议室前方,目光扫过每一张年轻的脸庞,“APIO 的难度通常低于 NOI,但高于省选。我们的目标不是个人金牌,而是团队总分。”

他顿了顿,加重了语气:“中国队要在亚太地区拿第一。这不是我一个人的目标,是 CCF 的要求,也是你们每一个人的责任。”

会议室里安静无声。

“林自由,林山,吴水,江浩,蒋兴,金思颖……"方老师念着名单,“你们代表了福建的最高水平。但在这里,你们代表的是中国。”

散会后,林山回到房间。他和林自由住一间双人间。

窗外是北京的夜景,灯火辉煌,车流如织。远处的 CBD 大楼高耸入云,像是一座座巨大的数据结构。

“紧张吗?”林自由坐在床边,调试着自己的键盘。

“有点。”林山老实承认,“听说这次有俄罗斯和韩国的选手在线参赛,实力很强。”

“强就强呗。”林自由试了试键轴的回弹,“反正题目是一样的。”

“陈智清好像一点都不紧张。”林山说,“毕竟是他母校。”

“他紧张与否不重要。”林自由停下手中的动作,转头看着林山,“重要的是我们。福建队这次有五个名额,要是拖了后腿,回去姜金非得把我们骂死。”

提到姜金,林山脑海里浮现出那句“那咋了”。

“不会拖后腿的。”林山坚定地说,“大不了我也说一句‘那咋了’。”

林自由笑了:“行,到时候一起说。”

本文为虚构文章!请勿与现实混淆!

五月十六日,早上八点半。

考场设在人大附中的信息楼。这里比师大附中的机房更宽敞,设备也更先进。每台电脑都配了双显示器,机械键盘敲击起来手感极佳。

林山找到自己的座位,坐下。

陈智清(以北京队身份加入中国一队)就坐在他斜前方。那个背影看起来很单薄,但透着一股不可撼动的稳定性。

“各位选手请注意,距离考试开始还有十分钟。”广播里传来标准的普通话提示。

林山深吸一口气。北京的空气虽然干燥,但此刻吸入肺中,却让他格外清醒。

他检查了编译器,测试了键盘,确认环境变量无误。

“题目下发。”

屏幕亮起。三道题目出现在眼前。

第一题:贪心策略。看似简单,但需要证明最优性。 第二题:数据结构。动态树操作,涉及 LCT 的复杂变形。 第三题:计算几何。半平面交与凸包的结合。

林山的心跳微微加速。

第二题,动态树。这是他的弱项之一。虽然在集训营被姜金虐过,但真正到了考场上,那种压迫感依然真实。

他看了一眼时间。五个小时。

“先做第一题。”他对自己说。

手指落在键盘上。熟悉的敲击声响起,周围的其他选手也开始进入状态。考场里只剩下键盘声和空调的嗡嗡声。

第一题比想象中棘手。贪心的策略需要分类讨论,边界条件极多。林山写了两个版本,才通过了大样例。

时间过去了一个半小时。

转向第二题。

LCT(Link-Cut Tree)。林山闭上眼睛,脑海里浮现出姜金在集训营里画的那些树链剖分图。

“那咋了。”他默念了一遍。

难又咋了。不会就学,不懂就推。

他开始在草稿纸上画树的结构。Access 操作,Splay 旋转,维护子树信息……

思路逐渐清晰。

代码开始流淌。

本文为虚构文章!请勿与现实混淆!

下午一点半,考试结束。

走出考场时,阳光有些刺眼。北京的五月,柳絮纷飞,像是一场白色的雪。

林山揉着酸痛的脖子,看到林自由站在门口等他。

“怎么样?”林自由问。

“第二题写出来了,但常数可能有点大。”林山说,“你呢?”

“还行。”林自由轻描淡写,“第三题的几何精度处理了很久。”

吴水和江浩也走了过来。

“完了完了。”吴水苦着脸,“第一题我就拿了暴力分。那个证明我怎么都证不出来。”

“没事。”江浩安慰道,“大家都难。”

陈智清走在最后,看到他们,微微点了点头:“这次题目质量不错。”

“学霸果然不一样。”吴水吐槽道。

晚上,成绩公布。

不是个人成绩,而是各国各地区的团队总分。

会议室的大屏幕上,数据不断刷新。

中国一队,中国二队,日本,韩国,俄罗斯,澳大利亚……

福建队的八名选手,作为中国一队的主力成员,贡献了巨大的分数。

“出来了!”有人喊道。

屏幕上,中国一队总分赫然排在第一位。

亚太地区第一。

会议室里爆发出一阵欢呼。方老师眼眶微红,用力拍了拍手:“好!好!”

林山看着那个数字,忽然觉得这一个月的辛苦都值了。

林自由站在他身边,平静地看着屏幕,但嘴角微微上扬。

“第一。”林自由说。

“嗯。”林山点头,“第一。”

“回去可以跟姜金炫耀了。”吴水挤过来,“看他还有什么话说。”

“他肯定会说‘那咋了’。”林山笑了。

大家都笑了。

本文为虚构文章!请勿与现实混淆!

晚上九点,酒店房间。

林山坐在窗前,看着北京的夜景。

手机震动了一下。是福州一中的竞赛群。

“恭喜大佬们!” “卧槽,亚太第一!” “等你们回来请客!”

林山回复了一个笑脸。

林自由洗完澡出来,擦着头发:“想什么呢?”

“在想水林服务器。”林山说,“这么久没上线,不知道有没有人捣乱。”

“回去再修。”林自由坐到自己的床上,“还有两个月就是 NOI2025 了。”

“嗯。”林山转过身,“这次 APIO2025 虽然拿了第一,但 NOI 才是真正的战场。”

“怕吗?”林自由问。

“怕。”林山老实说,“但姜金说得对,怕也得打。”

“那就打。”林自由关掉灯,“睡觉。明天还要复盘。”

黑暗笼罩了房间。

窗外,北京的灯火依旧璀璨。这座古老而现代的城市,见证了无数少年的梦想。

林山闭上眼睛,脑海里浮现出福州的闽江,师大附中的机房,还有那句简单却有力的“那咋了”。

从福州到北京,从省选到 APIO,路走了很远。

但前方还有更长的路。

NOI,国家队,IOI……

每一个台阶都更高,更陡。

但幸好,身边还有伙伴。

“自由。”林山在黑暗里叫了一声。

“嗯?”

“等 NOI 完了,我们回服务器把那座摩天大楼封顶吧。”

“行。”林自由的声音带着困倦的笑意,“到时候叫上吴水,让他负责红石电路。”

“一言为定。”

“一言为定。”

呼吸声逐渐平稳。

在这个干燥的北方夜晚,两个来自南方湿润城市的少年,带着亚太第一的荣耀,沉沉睡去。

梦里,那座国际化大都市灯火辉煌,等待着他们的归来。

而属于他们的代码人生,还在继续编译,没有 Error,只有 Warning,且都能通过。

明天,太阳照常升起。

Next stop,清华夏令营。

第九章:清华夏令营

本文为虚构文章!请勿与现实混淆!

七月十五日,早上八点。

北京的暑气比五月盛了许多。清华大学的校门口的石碑被阳光晒得发烫,林山拖着行李箱站在阴影里,额头上已经渗出了一层细密的汗珠。

这是信息学奥林匹克竞赛清华科学夏令营。

与 APIO 不同,APIO 是国际性的热身赛,而夏令营,直接关系到大学的录取优惠。对于高三竞赛生来说,这是通往清北的最后一道门槛,也是 NOI 前最重要的心理博弈。

“热死了。”吴水跟在后面,手里扇着一张夏令营的宣传单,“听说今年的营员比去年多了两百人,录取比例要缩。”

“缩就缩呗。”林自由走在最前面,回头看了他们一眼,“反正我们目标是优秀营员,又不是及格就行。”

林山笑了笑,没说话。他的心里其实有些打鼓。API0 虽然拿了亚太第一,但那是团队成绩。夏令营是个人战,而且对手不仅仅是各省省队,还有那些没能进省队但实力强劲的“野路子”高手。

“方老师说了,这次 camp 的出题人是国家队教练。”林自由压低声音,“难度会比 APIO 再上一个台阶。”

“那咋了。”林山下意识地说出了那句口头禅。

林自由愣了一下,随即笑了:“行啊,姜金的精神遗产你继承得不错。”

“那是。”吴水凑过来,“要是连这句都不敢说,还打什么竞赛。”

三人办理完入住手续,宿舍安排在紫荆公寓。六人间,条件比师大附中的集训营好了不少,但气氛却更压抑。宿舍里另外三个营员,一个来自浙江,一个来自上海,还有一个是四川的。大家都在默默调试自带的键盘,空气中只有机械轴体的咔哒声。

林山坐在床边,打开手机。水林服务器的状态栏显示在线人数:12 人。

“昨晚有人上线吗?”他发消息给林自由。

“有。”林自由秒回,“江浩上去把工业区的红石电路优化了一下。他说我们不在,他得守着家。”

林山心里一暖。

那个虚拟的城市,不仅是他们的放松地,更是他们的精神锚点。无论走多远,只要登录上去,看到那些熟悉的建筑,就知道自己来自哪里。

“晚上考完试,回去看看。”林山回复。

“行。”

本文为虚构文章!请勿与现实混淆!

七月十六日,早上八点半。

考场设在清华计算机系大楼的机房。这里的设备是全国顶尖的,但林山坐下时,手心还是出了汗。

监考老师分发试题袋。密封条撕开的声音,在安静的机房里显得格外刺耳。

林山展开试卷。三道题。

第一题:数论。涉及莫比乌斯反演的高级应用。 第二题:数据结构。可持久化线段树套平衡树。 第三题:动态规划。状态压缩与轮廓线结合。

“果然。”林山心里暗叹,“全是硬骨头。”

旁边的浙江选手已经开始敲键盘了,手速快得惊人。林山深吸一口气,强迫自己进入状态。

第一题,莫比乌斯反演。

公式在脑海里浮现。\sum_{d|n} \mu(d)... 他需要推导一个卷积形式。草稿纸上写满了算式,汗水滴在纸上,晕开了墨迹。

“别慌。”他对自己说,“姜金说过,难咋了。”

他重新梳理思路。把问题转化为前缀和计算,再用杜教筛优化复杂度。

九点四十分,第一题代码写完。编译,通过样例。

他看了一眼时间,还剩四个小时二十分钟。

第二题,数据结构。

这是他的弱项。套树结构极易写挂,而且调试困难。林山犹豫了一下,决定先写暴力。拿到暴力分,再想正解。

键盘声此起彼伏。机房里像是一个巨大的蜂巢,每个人都在忙碌地酿造自己的蜜。

林自由坐在斜前方。林山能看到他的背影,挺得笔直,敲击节奏稳定而匀速。那是绝对自信的表现。

“自由肯定稳了。”林山想,“我不能拖后腿。”

第二题卡住了。指针报错,内存泄漏。林山检查了三遍,没找到问题。

焦虑像野草一样在心里蔓延。

他闭上眼睛,想起集训营那天机房全体卡机的场景。想起姜金那句“环境依赖太脆弱”。

“那咋了。”

他睁开眼,果断删掉了那段复杂的指针代码,改用数组模拟指针。虽然麻烦,但稳定。

重写。

十一点半,第二题通过。

还剩两个小时。第三题,动态规划。

这道题的状态转移方程非常隐蔽。林山画了几个小数据的手推表,终于发现了规律。

“是矩阵快速幂优化。”

他迅速构建矩阵,写快速幂。

下午一点整,考试结束。

林山走出机房,阳光刺眼。他感觉整个人像是被掏空了,但心里却异常踏实。

本文为虚构文章!请勿与现实混淆!

晚上七点,宿舍。

吴水瘫在床上,一动不动:“完了,第三题我爆零了。矩阵构造错了。”

“没事。”林自由正在整理错题本,“第一题和第二题拿满,总分也够优秀了。”

“你当然这么说。”吴水翻了个身,“你是大佬,我是混子。”

“谁不是混过来的。”林自由合上本子,“姜金当年也是这么混进国家队的。”

“真的假的?”吴水来了兴趣。

“假的。”林自由笑了,“但他说过,竞赛就是不断试错的过程。错了就改,爆了就重开。”

林山坐在书桌前,打开电脑,登录水林服务器。

熟悉的出生点。夜幕降临,城市里的灯光自动亮起。工业区里,红石机械正在运转,自动熔炉冒着烟,地铁列车在轨道上穿梭。

“江浩在线。”林山说。

频道里传来江浩的声音:“山哥,自由哥。你们考得怎么样?”

“还行。”林山操作角色走到工业区中心,“这里怎么多了个仓库?”

“哦,我看你们不在,就把资源整理了一下。”江浩有些不好意思,“怕你们回来不够用。”

林山看着那个整齐的仓库,心里某个柔软的地方被触动了。

“辛苦了。”林山说。

“不辛苦。”江浩说,“你们在前面打仗,我在后面搞后勤。这也是团队嘛。”

林自由也登录了进来:“说得好。今晚我们把市中心的那个摩天大楼封顶吧。”

“现在?”吴水坐了起来,“不复习了?”

“复习不差这一晚。”林自由说,“劳逸结合,效率更高。”

“行。”吴水翻身下床,“那我负责照明。”

三个角色站在未完工的大楼顶端。下面是他们共同构建的城市,灯火通明,车流如织。

“其实,”林山忽然说,“我觉得这比拿优惠更重要。”

“什么?”吴水问。

“这种一起做事的感觉。”林山说,“不管是在考场,还是在服务器里。”

林自由没说话,只是操作角色放下了一块金块。那是大楼的最后一块基石。

烟花在服务器上空绽放。

“封顶了。”林自由说。

“嗯。”林山点头,“封顶了。”

本文为虚构文章!请勿与现实混淆!

七月十八日,下午三点。

结果公布仪式在清华大礼堂举行。

林山坐在台下,手心微微出汗。虽然嘴上说着“那咋了”,但真到了这一刻,谁又能完全不在乎?

大屏幕上开始滚动名单。

“优秀营员。”

一个个名字闪过。

“福建,福州一中,林自由。”

林自由神色平静,只是轻轻点了点头。

“福建,福州一中,林山。”

林山的心跳漏了一拍。他听到了,确实听到了。

“福建,福州三中,吴水。”

吴水在旁边猛地握紧了拳头,低声说了句“卧槽”。

福建队这次表现优异,大部分人都拿到了优秀营员资格。这意味着,他们已经被清华录取。

方老师站在台上,向着福建学生们,脸上露出了久违的轻松笑容:“恭喜大家。但这只是第一步。”

他顿了顿,目光扫过台下的学生们:“NOI 还在后面。夏令营的优惠是保底,NOI 的成绩才是上限。我希望你们不要因为拿到了优惠就松懈。”

“那是自然。”林自由小声说。

散会后,人群涌出礼堂。

陈智清走在前面,有人围上去祝贺。他淡淡地回应着,目光却在人群中搜索,看到了林山,微微颔首。

“下次 NOI 见。”陈智清说。

“下次 NOI 见。”林山回应。

这个曾经让他们感到压力的“外援”,如今成了并肩作战的战友。竞赛圈就是这样,对手与朋友,往往只有一线之隔。

本文为虚构文章!请勿与现实混淆!

晚上九点,清华校门口。

大巴车已经发动,准备送营员们去北京南站。林山站在车下,最后看了一眼清华的夜景。

“想什么呢?”林自由递过来一瓶水。

“在想明年。”林山接过水,“明年这个时候,我们还会在这里吗?”

“会。”林自由肯定地说,“作为大学生。”

“那服务器呢?”

“服务器永远在。”林自由说,“只要我们需要,它就在。”

吴水跑过来:“快上车了!方老师在催了!”

“来了。”

三人跑上大巴。车厢里弥漫着离别的气息,但更多的是对未来的期许。

林山靠在窗边,看着窗外飞逝的清华园。

从福州到北京,从省选到夏令营,这条路走了半年。

有过迷茫,有过崩溃,有过“那咋了”的自嘲,也有过封顶时的喜悦。

手机震了一下。

是江浩的消息:“山哥,听说你们拿优秀了?恭喜!今晚服务器里放烟花庆祝吗?”

林山笑了,回复:“放。等我们回去。”

“好嘞!”

大巴驶上高速,奔向火车站。

NOI 的赛场在绍兴。那是真正的全国决赛,是金牌与银牌的分界线,是国家队选拔的起点。

但林山不再害怕。

因为他知道,无论结果如何,他都不是一个人在战斗。

身边有林自由,身后有吴水,远方有江浩。

还有那个永远亮着灯的水林服务器,等待着他们归来。

“自由。”

“嗯?”

“那就一起努力。”

“一起努力。”

车轮滚滚,夜色深沉。

属于他们的青春,就像那段红石电路,复杂,精密,但只要逻辑连通,就能点亮整个世界。

下一站,NOI。

而在那之后,是更广阔的人生。

但此刻,在这个夏夜的大巴上,两个少年带着清华夏令营的荣誉,沉沉睡去。

梦里,闽江的水声依旧温柔,福州的榕树依旧翠绿。

那是家的方向,也是出发的地方。

第十章:皆大欢喜

本文为虚构文章!请勿与现实混淆!

七月二十日,下午四点。

福州的暑气正盛,蝉鸣声嘶力竭地穿透了福州一中宿舍楼的玻璃窗。林山拖着行李箱站在 206 宿舍门口,钥匙插进锁孔,轻轻一转。

“咔哒”。

门开了。熟悉的潮湿气息扑面而来,混合着暑假期间封闭已久的灰尘味。林山深吸了一口气,感觉像是回到了另一个世界。

北京清华夏令营的辉煌还历历在目,但此刻,脚下踩的是宿舍略显磨损的地砖,耳边是窗外榕树上不知疲倦的蝉鸣。

“回来了?”林自由跟在身后,把行李箱拎进屋,“两个月后就是 NOI,这次回来算是最后的休整。”

“嗯。”林山放下箱子,目光扫过宿舍。

四人间,上下铺。这是他们高一刚入学时的配置,后来高三竞赛生大多搬去了集训宿舍,206 便空了出来。但今天,宿舍里却有人。

靠窗的下铺坐着两个男生,正对着笔记本电脑敲代码。听到开门声,他们同时转过头。

“王腾飞?余明?”林山愣了一下,随即惊喜地走上前,“你们怎么在?”

王腾飞推了推眼镜,笑着站起来:“听说你们夏令营拿了优秀,回来庆祝一下。顺便……我们也算是‘回家’看看。”

余明合上电脑,眼里闪烁着笑意:“恭喜啊,清华信息系。没想到最后我们还是殊途同归。”

林山有些疑惑:“殊途同归?你们不是保送数学系吗?”

“对啊。”王腾飞走到林山面前,拍了拍他的肩膀,“前几天清华招生组正式发函了,我和余明都签了预录取协议。数学科学学院。”

林山瞪大了眼睛:“清华数学系?你们也……"

“怎么,只许你们信息系保送,不许我们数学系活?”余明调侃道。

林自由在一旁笑了:“那这下热闹了。信息系和数学系,听说紫荆公寓的宿舍安排在同一栋楼?”

“基本没错。”王腾飞点点头,“到时候大学宿舍估计也能串门。”

林山感觉心脏被某种温热的情绪填满了。

小学同学,初中同学,高中室友。四个人,从懵懂孩童到青涩少年,一起走过福州的街头,一起刷过题,一起熬过无数个深夜。

现在,他们又要一起去北京,去清华。

“206 全员清华。”林山喃喃道,“这概率比抽卡 SSR 还低吧。”

“所以说是皆大欢喜。”王腾飞指了指上下铺,“这床铺怎么分?还是老样子?”

“上铺睡觉,下铺办公。”林自由熟练地把自己的行李放上林山对面的上铺,“竞赛生的传统不能丢。”

“行,那我睡你上面。”余明笑着说,“免得你半夜敲键盘吵到我。”

宿舍里爆发出一阵笑声。

窗外的蝉鸣似乎也没那么噪了,反而成了某种背景音,衬托着这份来之不易的宁静与喜悦。

本文为虚构文章!请勿与现实混淆!

晚上八点,宿舍里亮起了灯。

王腾飞和余明去食堂打饭了,林山和林自由留在宿舍整理行李。林山坐在下铺,手机放在膝盖上,屏幕亮着微信界面。

通讯录里,那个备注为“方晶(上海)”的头像格外显眼。

那是个动漫风格的头像。

林山犹豫了一下,点击了语音通话。

嘟声响了两下,接通了。

“喂?林山?”女生的声音清脆悦耳,带着几分上海口音的软糯,但语气却很爽快。

“嗯,是我。”林山清了清嗓子,“回到福州了吗?”

“刚到家。”方晶笑了笑,“听说你们福建队夏令营表现不错,林自由拿了优秀,你也拿了?”

“都拿了。”林山说,“你呢?上海队那边怎么样?”

“老样子。”方晶语气轻松,“NOIP 上海第 11 名,保送清华计算机。这次交流集训,我可是带着任务来的。”

“什么任务?”

“代表上海队,把福建队拉下马。”方晶 joked,随即又认真起来,“不过说真的,两个月后 NOI,我们就是队友了。中国国家队选拔,不能留手。”

“那是自然。”林山笑了,“不过在那之前,福建和上海的交流集训,我可是不会放水的。”

“谁怕谁。”方晶哼了一声,“对了,听说你最近又在肝水林服务器?”

林山一愣:“你怎么知道?”

“洛谷动态看到了。”方晶说,“你也知道,我也是个老 MC 玩家了。”

提到这个,林山的话匣子打开了:“那你应该知道,我们最近在建那个国际化大都市的中央区。缺个红石工程师,你有兴趣吗?”

“红石我可不行。”方晶说,“但我擅长建筑美学。上次看你发的那个体育馆,结构有点问题,承重墙位置不对。”

“行,那等你来了福州,指导一下。”

方晶告诉了他一个秘密

林山彻底愣住了。

竞赛圈里,喜欢技术的男生多,喜欢动漫的女生也不少。但同时喜欢特摄剧和魔法少女,还能在信息学竞赛里拿到保送资格的女生,简直是稀有物种。

“真的?”林山问。

“骗你干嘛。”方晶说,“下次见面,我可以带你去看我的收藏。不过前提是,NOI 之前你得把那道动态规划的优化搞定。”

“行。”林山感觉浑身充满了力量,“一言为定。”

“一言为定。”方晶说,“挂了,我要去整理行李了。福州见。”

“福州见。”

电话挂断。林山握着手机,嘴角忍不住上扬。

本文为虚构文章!请勿与现实混淆!

林自由坐在对面的下铺,正在调试键盘。看到林山的表情,他挑了挑眉。

“方晶?”

“嗯。”林山把手机放下,“她也是清华。而且……她也喜欢###(保密)”

林自由手上的动作停了一下,随即笑了:“这概率比 206 全员清华还低。”

“是啊。”林山感叹,“感觉像是找到了同类。”

“那不错。”林自由继续敲键盘,“有个志同道合的朋友,集训路上不孤单。”

“你呢?”林山问,“刚才看你在发消息,金思颖?”

“嗯。”林自由淡淡道,“问她交流集训的具体安排。厦门一中那边也会派人过来。”

“聊得怎么样?”

“还行。”林自由说,“她说这次要是输给我们,下次请客。我说要是我们输了,我们请客。”

“典型的林自由风格。”林山吐槽道,“永远不吃亏。”

“竞赛场上,吃亏就是扣分。”林自由头也不抬,“不过……她确实很强。NOIP 全省第三,不是运气。”

“那当然。”林山想起省选榜单上的名字,“金思颖,蒋兴,陈智清……这次 NOI,高手如云。”

“高手如云才好。”林自由按下回车键,编译通过,“只有和强者交手,才知道自己的极限在哪。”

本文为虚构文章!请勿与现实混淆!

晚上九点,王腾飞和余明回来了。

四个人围坐在宿舍中间的小桌子旁,吃着打包回来的福州鱼丸和拌面。

“干杯。”王腾飞举起可乐罐,“为了 206,为了清华。”

“为了清华。”三人碰罐。

气泡在褐色液体里翻腾,像是一群跃动的精灵。

林山咬了一口鱼丸,Q 弹的口感带着熟悉的鲜味。这是福州的味道,是家的味道。

“两个月后,就要去长沙了。”余明忽然说,“NOI 赛场。”

“嗯。”林山点点头,“最后一搏。”

“不管结果如何。”王腾飞说,“咱们四个,都已经赢了。”

“说得对。”余明笑道,“高考免了,保送了。剩下的,就是纯粹的追求。”

林山看向林自由。林自由正专注地挑着碗里的葱花,神色平静。

这一路走来,太不容易了。

省选前的焦虑,集训营的“那咋了”,API0 的荣耀,夏令营的考验。每一次以为要撑不下去的时候,都有人拉一把。

是林自由,是吴水,是江浩,是王腾飞,是余明,还有那个远在电话线另一端的方晶。

“对了。”林山忽然说,“今晚水林服务器开放新区域。”

“哪个区域?”王腾飞问。

“大学区。”林山说,“我建了个清华校门的模型,虽然有点粗糙。”

“走走走。”余明立刻放下筷子,“上线看看。”

“我也来。”王腾飞响应。

林自由笑了笑:“行,那就休战一晚。”

四台电脑同时亮起。

屏幕的光映在四个少年的脸上,那是青春最生动的模样。

本文为虚构文章!请勿与现实混淆!

晚上十一点,宿舍熄灯。

林山躺在上铺,听着下铺林自由轻微的呼吸声。

窗外,福州的夜空难得清澈,几颗星星挂在远处,微弱却坚定。

想起王腾飞说的:“206 全员清华。”

想起姜金说的:“那咋了。”

想起无数个深夜里,键盘敲击声组成的交响乐。

NOI 还有两个月。

那是最后的战场,是金牌与银牌的分界线,是国家队选拔的起点。

但此刻,林山心里没有恐惧,只有期待。

因为他知道,无论结果如何,他都不是一个人在战斗。

身后有 206 的兄弟,前方有志同道合的伙伴。

手机屏幕亮了一下,是方晶发来的消息。

“晚安。记得优化 DP。”

放下手机,他闭上眼睛。

梦里,那座水林服务器的国际化大都市灯火辉煌。清华的校门巍峨耸立,206 宿舍的灯永远亮着。

而属于他们的故事,才刚刚写完序章。

皆大欢喜,不是结局,而是新的开始。

夜风吹过,闽江的水声隐约可闻。

那是家的方向,也是梦想起航的地方。

在这个夏夜,四个少年带着对未来的期许,沉沉睡去。

明天,太阳照常升起。

下一站,NOI。

第十一章:福沪联训

七月二十一日,早上八点。

福州的七月像一座蒸笼。即使才刚过八点,师大附中校园里的空气就已经变得粘稠起来。知了在榕树上拼命嘶鸣,声音穿透了信息楼厚厚的玻璃窗,钻进 601 机房。

林山坐在熟悉的 23 号座位上,手指无意识地摩挲着键盘的边缘。林自由坐在他旁边的 24 号位,正低头检查着本地评测环境。

“听说上海队的大巴还有十分钟到。”吴水从后排探过头来,手里转着一支笔,“这次联训,算是 NOI 前的最后一次大规模实战了。”

“嗯。”林山应了一声,目光却不由自主地飘向门口。

昨天深夜和方晶的通话还在耳边回响。那个声音清脆、带着几分上海口音的女生,那个同样喜欢特摄的竞赛生。今天,她将真实地出现在这里。

对于林山来说,这不仅仅是一次集训。这是两个省份顶尖选手的碰撞,也是两个相似灵魂的第一次面对面。

“别紧张。”林自由忽然开口,没抬头,“就是多了一群一起刷题的人而已。”

“我知道。”林山笑了笑,“就是有点期待。”

“期待什么?”吴水插话,“期待被上海队虐?”

“期待交流。”林山纠正道,“姜金说过,闭门造车是竞赛大忌。”

正说着,走廊里传来了一阵脚步声和交谈声。不同于福建队选手的福州普通话,那是一群带着吴语软糯口音的交流声。

门被推开了。

上海队的选手们鱼贯而入。他们穿着统一的白色队服,胸前印着黑色的"SH"字样。队伍里,一个女生格外显眼。她扎着高马尾,身材高挑,皮肤白皙,眼神里透着一种自信的光芒。

方晶。

林山在心里默念了一遍这个名字。

方晶走进机房,目光扫视了一圈,很快锁定了后排的林山。她嘴角微微上扬,快步走了过来。

“林山?”她停在 23 号桌前,伸出手,“终于见面了。”

林山站起身,握住那只手。手掌柔软有力。

“方晶。”林山说,“欢迎来福州。”

“福州真热。”方晶松开手,扇了扇风,“比上海热多了。不过听说这里的鱼丸不错。”

“晚上请你吃。”林山承诺道。

“行,记住了。”方晶笑了笑,转头看向林自由,“这位就是林自由大佬吧?夏令营表现很猛。”

“过奖。”林自由点点头,算是打招呼。

“那我先去放行李。”方晶指了指门口的行李箱,“十点半正式开始训练,别迟到哦。”

看着方晶走向前排座位的背影,吴水凑过来小声说:“这就是那个上海第 11 名?气场很强啊。”

“确实。”林山坐回椅子上,心跳稍微快了一些,“而且,她是真的懂。”

“懂什么?”吴水疑惑。

“懂我们的世界。”林山看着屏幕,嘴角扬起,“不仅仅是代码的世界。”

十点半,训练正式开始。

这次联训的教练是两位——福建队的方老师和上海队的一位特邀教练,据说曾是 IOI 金牌得主。

“今天的题目,三道。”方老师站在讲台上,身后投影屏显示着题目列表,“难度接近 NOI Day1。目的是检验大家在夏令营后的状态保持情况。”

林山点开题目包。

第一题:数论。涉及莫比乌斯反演与杜教筛的结合。 第二题:数据结构。动态树维护路径信息。 第三题:组合数学。生成函数与多项式求逆。

“全是硬骨头。”吴水在后面哀嚎,“这是要我们的命啊。”

“别抱怨。”方晶的声音从前排传来,回头眨了眨眼,“上海队可是准备好了要拿第一的。”

“那要看你们有没有本事。”林自由淡淡地回应,手指已经放在了键盘上。

机房里的气氛瞬间紧绷起来。原本只是友好的交流,此刻变成了无声的较量。键盘敲击声此起彼伏,像是一场没有硝烟的战争。

林山深吸一口气,专注于第一题。

莫比乌斯反演。公式在脑海里推导。\sum_{d|n} \mu(d) = [n=1]... 他需要构造一个卷积形式。

草稿纸上写满了算式。汗水顺着额角滑落,滴在纸上。

他看了一眼时间。一个小时过去了。

周围有几个上海队的选手已经开始了第二题。林山心里有些急,但强迫自己稳住节奏。

“稳。”他对自己说,“姜金说过,那咋了。”

他重新梳理思路,发现了一个可以简化的前缀和性质。代码开始流淌。

两个小时后,第一题通过。

他转头看向林自由。林自由的屏幕上已经打开了第二题的编译器,神情专注。

再看方晶。她正咬着笔杆,盯着屏幕上的公式,眉头微皱。

林山犹豫了一下,通过内部聊天系统发了一条消息:“第二题的 LCT,注意 Access 操作后的虚边维护。”

那是他之前在集训营里踩过的坑。

几秒钟后,方晶回复了一个表情:“抱拳”。

随即,她敲击键盘的速度明显加快了。

中午十二点,训练暂停。

师大附中的食堂里,福建队和上海队的选手混坐在一起。空气中弥漫着饭菜的香味和热烈的讨论声。

林山、林自由、方晶、吴水,还有厦门一中的金思颖,围坐在一张圆桌旁。

“上午那道生成函数,你们谁做出来的?”吴水嘴里塞着鸡腿,含糊不清地问。

“上海队有个高一的做出来了。”金思颖说,“思路很清奇,用了半在线卷积。”

“厉害。”林自由评价道,“我们这边还在推公式。”

“其实也不难。”方晶放下筷子,抽出纸巾擦了擦嘴,“关键是转换模型。把组合问题转化成多项式系数。”

“你懂挺多啊。”林山看着她说。

“平时喜欢看题解呗。”方晶笑了笑,忽然压低声音,和林山交流起来。

旁边的林自由和金思颖对视一眼,都看到了对方眼里的笑意。

“你们聊得挺欢。”金思颖说,“看来福建上海一家亲啊。”

“那是自然。”方晶大方地说,“竞赛圈本来就小。更何况,我们都是要去清华的人。”

提到清华,大家都沉默了一瞬,随即露出了然的笑容。

是啊,无论现在属于哪个省队,两个月后,他们中的大多数人将在清华园重逢。

“不过,”林自由忽然说,“NOI 之前,我们还是对手。”

“当然。”方晶举起饮料罐,“赛场上见真章。”

“赛场上见真章。”众人碰罐。

下午两点,训练继续。

经过中午的休整,机房里的气氛更加热烈。上海队和福建队的选手之间,不再是单纯的竞争,多了几分切磋的意味。

林山在做第三题。组合数学一直是他的弱项,但有了中午方晶的提示,他思路开阔了许多。

生成函数。多项式求逆。

他敲下最后一行代码,编译,通过。

看了一眼排名板。福建队暂时领先,但上海队紧追不舍。

“不错啊。”方晶不知何时走到了他身后,“第三题这么快就过了?”

“运气好。”林山谦虚道,“你呢?”

“卡常数了。”方晶叹了口气,“多项式求逆的 NTT 模数选得不好,炸了。”

“试试 998244353。”林山建议道。

“试过了。”方晶苦笑,“还是 TLE。可能是我写法太丑。”

“我看看。”林山让出半个座位。

方晶凑过来,两人头碰头看着屏幕。

“这里,”林山指着循环部分,“可以展开写,减少函数调用开销。”

“对哦。”方晶恍然大悟,“我怎么没想到。”

她迅速修改代码,重新提交。

AC。

“谢了。”方晶直起身,拍了拍林山的肩膀,“欠你一个人情。”

“没事。”林山感觉肩膀有些发热,“互相学习。”

林自由坐在旁边,默默地看着这一幕,没说话,只是嘴角微微上扬。

晚上六点,训练结束。

走出师大附中的时候,夕阳已经把天空染成了橙红色。福州的暑气稍稍退去,晚风带来了一丝凉意。

上海队的选手要返回酒店,福建队的选手则大多回家或回校。

“明天见。”方晶站在大巴车前,挥手告别,“别忘了晚上的服务器。”

“忘不了。”林山挥手。

大巴车缓缓驶离。林山站在原地,看着车尾灯消失在街角。

“挺般配的。”林自由忽然说。

“什么?”林山转头。

“我说你们。”林自由双手插兜,“都保送清华,都搞信息学。这概率比中彩票还低。”

“别瞎说。”林山脸有些红,“就是朋友。”

“行,朋友。”林自由笑了笑,“那今晚我去水林服务器当电灯泡?”

“你敢。”林山作势要打。

两人笑闹着走向地铁站。

“说真的,”林自由忽然收敛了笑容,“这次联训,感觉怎么样?”

“很好。”林山认真地说,“看到了差距,也找到了伙伴。”

“那就够了。”林自由说,“NOI 还有两个月。只要保持这个状态,没问题。”

“嗯。”

地铁进站的风吹过来,带着地下特有的凉意。

林山握着手机,屏幕上显示着方晶发来的消息:“晚上八点,水林服务器见。我要看看那个摩天大楼。”

林山回复:“好。带你去顶层看夜景。”

放下手机,他看向隧道深处驶来的灯光。

从省选到夏令营,从夏令营到联训。路走了很远,身边的人换了一批又一批。

但有些东西始终没变。

对代码的热爱,对胜利的渴望,还有那些志同道合的伙伴。

“走吧。”林自由说,“回去吃饭。今晚还要刷题。”

“行。”

两人走进车厢,身影融入人流。

在这个城市的地下脉络里,两个少年带着联训的收获,驶向属于他们的终点。

而那句“晚上见”,像是一个约定,连接着福州与上海,连接着现实与虚拟,连接着现在与未来。

夜风吹过,闽江的水声隐约可闻。

那是家的方向,也是梦想起航的地方。

在这个夏夜,少年们带着对 NOI 的期许,继续前行。

明天,太阳照常升起。

下一站,NOI。