散伙饭定在周五晚上。
博文本不想去。他妈打了个电话来——“以后见面少了。去一趟,不掉块肉。“
他去的时候饭局已经开始了一半。推开包厢门,十几张脸转过来。有的恍惚,有的惊喜——“博文!“——然后大多数又转回去,继续聊各自的学校和前程。
赵乾坐在主位上。不是谁安排的,是大家默认他应该坐那儿。白色polo衫,胸口的logo博文不认识,但一看就不像便宜货。左手边是数学课代表,右手边是学习委员。学习委员说她进了中科大的基地班,数学课代表说他在浙大工科实验班。赵乾听着,偶尔点头,姿态像在听下属汇报。
博文在边角找了个位置坐下。旁边是同宿舍一个男生,考得和他差不多——省内另一所二本。两人互相看了一眼。没说话。
“博文。“
赵乾在桌子那头叫了他一声。声音不大,但整个包厢都听见了。
“你考的——莒城什么来着?“
博文抬起头。赵乾的表情是真诚的疑问,不是在嘲讽。他可能真的没记住莒城理工的名字。毕竟一个清华新生,没必要记住莒城理工。
“莒城理工。“
“哦对。计算机是吧?挺好。离家近。“
挺好。离家近。
和他妈说的一模一样。但赵乾说出来的时候,没有他妈那种小心翼翼的温柔。他说这几个字只是为了翻页——“我知道了““记住了““下一个话题“。
语文课代表在旁边打圆场:“莒城理工挺好的,离家近,以后家里有事能照应到。“她脸上挂着所有人都会的那种“化解尴尬“的笑。博文说不清这笑是让他舒服了些,还是更难受了一层。
赵乾端了杯饮料站起来——他不喝酒,博文记得这个习惯——走到博文旁边,碰了碰他的杯子。
“博文,我知道你努力。以后有什么不懂的,可以问我。“
这句话字面上没有任何恶意。但“我知道你努力“和“不懂的问我“放在同一句话里,它的结构本身就在说:我是帮人的那个,你是被帮的那个。我在高处,你在低处。
博文闷声说了句“好“,把杯子里的饮料干了。
赵乾拍了拍他的肩,回到主位。
剩下的时间博文吃得很快。不是饿,是想早点走。桌上红油在灯光下反着亮,有人聊保研,有人聊雅思,有人聊大学的社团招新。没有人聊莒城理工。
散场的时候快九点半了。博文在酒店门口等公交。其他人陆陆续续走了,最后剩下一小撮——赵乾、学习委员、数学课代表,还有两三个成绩靠前的——站在路灯下面聊天。
博文在公交站牌旁边,离他们大概五米。低着头看手机。不是故意偷听。但他们站得近,声音不大但也不小。
“清华的ACM选拔是九月中。我暑假得先刷一波题。“赵乾在说话。
“算法题?“数学课代表问。
“对。数据结构和图论是重点。他们选拔赛出的题比我以前刷的竞赛题变态多了。有一道——最长回文子串的变种,要求O(n)。不是O(n²),是O(n)。“能让赵乾说“变态“的题,确实不简单。
“最长回文子串最优解就是O(n)啊,Manacher算法。“学习委员接了一句。
“我知道。但这个变种在Manacher上加了一个约束——不能直接在字符串上操作,得先转成后缀数组再跑。我们讨论了一下午。“
博文听着。
系统忽然弹出一行字:【检测到新领域“编程“——可通过加点解锁基础技能。消耗1点。】
博文的手机屏幕还亮着。公交还没来。路灯下那几个人还在争。他的手指在屏幕上划了一下——按下了“解锁“。
消耗1点。
涌进来的不是知识,是一种感觉。像一扇你从来没进去过的门,忽然被人从里面推开了。里面不是空的——变量、循环、条件、函数、递归、数据结构、指针……全都整整齐齐地排好了。不是“忽然学会“,是这些东西终于有了结构,有了顺序,有了从A到B的路。
赵乾他们还在争论。
“——后缀数组的构建有好几个步骤,倍增和DC3选哪个——“
“DC3太复杂了,实际题目里倍增就够了。“学习委员说。
博文开口了。声音不大,但五个人全听到了。
“用SA-IS。线性时间。O(n)。“
五个人的头同时转过来。公交站牌的灯从侧面打在博文脸上,一半亮,一半暗。
“如果变种加了后缀数组的约束,最优解不是Manacher加后缀数组。“他把手机放下来。“应该用SA-IS直接构造后缀数组,时间复杂度线性,然后接一个简化版的回文匹配。整体还是O(n),但常数因子小一半。“
安静。
学习委员最先反应过来——她翻出手机上的笔记,划拉了两下。然后僵住了。
“……他说的是对的。SA-IS。我怎么没想到。“
数学课代表也愣了。“你什么时候学的编程?“
博文还没回答。赵乾先笑了。
“查过答案吧?“
不是冷笑。是带着一点困惑的笑——他不认为博文能自己想出来。但他也没有证据。所以他用问句。问句是最体面的质疑——“我怀疑你查了,但我给你留个面子。“
博文没有解释。他也不需要解释。
他的沉默让赵乾的笑容慢慢收了回去。
系统面板弹出一行金色提示——
【成就解锁:第一次用知识解决实际问题。获得点数+1。】
下面还有一行小字:【击败对手判定(隐式):赵乾——在你的弱势领域成功压制了对方一次。点数+1。】
博文愣了一下。击败对手?他只是说了一道题的解法。但系统的标准显然比他想得更宽——比赛不是唯一的战场。公开场合让一个精英对手颜面微损,也算。
剩余点数:5。
公交车来了。博文站起来往车门走。
“博文。“赵乾在身后叫他。
博文的脚顿了一下。
“你也报编程竞赛了?莒城那边——有联赛吗?“
“有。“博文回头看了他一眼。“有省级联赛。还没报名。“
赵乾点点头,没再说什么。
车门在博文身后关上。他坐到靠窗的位置往外看——赵乾几个人还站在路灯下。赵乾站得很直,白polo衫在橘黄色灯光里变成了灰。他今晚没有把博文的话当回事。但博文记住了他的眼神——那里面除了“质疑“,还有另一层意思。赵乾从来没想过,自己有一天会被博文纠正。
博文低下头。手机上有一条未读消息。莒城理工的新生群——
“什么?!咱学校去年四级通过率13%?!学长你在开玩笑吧???“
下面跟了个哭的表情包。
博文盯着这条消息看了五秒。然后把群设成“接收但不提醒“。他划开系统的成就列表,从头到尾扫了一遍。目光停在其中一行——
完成大学英语四级。奖励+3点。
下面还有:通过六级。+5点。专业排名前三。+8点。核心期刊论文。+15点。省级竞赛获奖。+10点。全国竞赛获奖。+30点。
一行一行。一条一条。像一张铺满了路标的地图。
他把手机屏幕按灭。公交车驶入一条没有路灯的小街,车窗上映出他自己的脸。那个445分的博文。那个赵乾眼中“我知道你努力“的博文。那个从今天开始有了一面蓝色面板的博文。
窗外的老城区在暗影里往后退。他看了一会儿。收回视线。
系统面板安静地浮在眼前。蓝色的光映在他的瞳孔里。他没有关掉它。他就这样看着这面蓝光,坐到了下车。
车门打开。莒城的夜风灌进来。他踏出去的那一步,踩在人行道上,发出一声极轻极轻的声音。
像有人把一本写了三年的书,翻过去最后一页。
好书等你评,快来成为鉴赏第一人