转生成为 galgame 男主又怎样(一)
EastSnowLotus · · 休闲·娱乐
一
二
三
一
九月的北京,秋老虎还没走。
我站在北京十一学校门口,抬头看了一眼校名,深吸了一口气。
今天是高一开学的第一天。而我,方铨铎,刚刚从人大附中初中部毕业,来到了这所据说“不太一样”的学校。
但我对“新开始”这件事,实在提不起什么期待。
三个月前,省队选拔。排名第十七,全省只有十二个名额。
差五名。
我不是没有机会了。信息学竞赛的规则是:高一和高二各有一次冲击NOI的机会。我现在才初三毕业,还有两年。
但那次失利像一根刺,扎在我心里,拔不出来。
陈雨翔——我在人大附中的同学,也是把我领进竞赛这个坑里的人——他的排名是第十四,也没进。但他比我干脆得多。
“铨铎,你还有两年,慌什么?”
他说这话的时候正在收拾行李,准备和爸妈去云南旅游。他的表情很轻松,好像省选只是一次模拟考,考砸了下次再来就好。
但我做不到。
我想起那个闷热的机房,想起那道我没有检查出来的有向图,想起交卷前三分钟的手抖。
我不想再来一次了。
所以这个暑假,我没有刷题。一本《算法竞赛进阶指南》放在书桌上,封面落了灰,我一页都没翻。
我想试试,不搞竞赛的人生是什么样子。
二
科学实验班的教室在教学楼三层,布局很特别——不是一排排面对黑板,而是几个人一组围坐,像大学讨论课。
我找了个靠窗的角落坐下,把书包放好。
旁边几个同学在聊天,聊暑假去了哪里玩、打什么游戏。我没有加入,拿出手机看了一眼。
陈雨翔发了消息:「到了?」
「到了。」
「感觉怎样?」
「还行。」
「那就行。对了,你——还搞竞赛吗?」
我看着这条消息,手指悬在键盘上,半天没动。
最后我回了两个字:「再说。」
然后把手机翻过来扣在桌上。
我决定不想这件事了。今天才是开学第一天。
三
午休的时候,教室里的人走得差不多了。
我本来想去食堂,但没什么胃口,就趴在桌上闭目养神。
教室里很安静,空调嗡嗡地响,窗外偶尔传来操场上打球的声音。
然后我听到了键盘声。
嗒嗒嗒嗒嗒——很有节奏,但中间会突然停一下,然后又断断续续地响起来,像是打字的人在反复删改什么。
我不是有意去听的。但那种声音太熟悉了,熟悉到我闭着眼睛都能在脑子里浮现出屏幕上的画面。
我抬起头,循着声音望过去。
第一排靠窗的位置,有一个女生正对着笔记本电脑聚精会神地敲键盘。
她的头发很长,两侧用红紫色的绳结绑了起来,垂在胸前。午后的阳光从窗户照进来,落在她身上,把她的侧脸照得很明亮。
她穿着校服,但校服在她身上显得有点大,衬得她整个人看起来比实际更小一些。
她皱着眉,盯着屏幕,嘴巴微微嘟起,看起来很不服气的样子。
——那个表情,我太熟悉了。
那是调bug调到崩溃的表情。
我在心里告诉自己:别管闲事。
我已经不搞竞赛了。
那不是我应该关心的事情了。
然后我听到她小声说了一句:
“为什么又WA了啊……”
语气里带着一种快要哭出来的委屈。
不知道为什么,我的腿自己动了起来。
四
我走到她身后,看了一眼屏幕。
是一道模拟题。题目大概是个简单的文字交互系统,她用了一个很长的if-else链来处理不同的输入指令。逻辑大致是对的,但她有几个语法错误,还有一个边界条件没有处理。
简单来说——菜。
但这种“菜”不是那种完全看不懂的菜,而是那种“思路是对的,但写得一塌糊涂”的菜。
这种菜,最让人受不了。
因为你觉得她差的不多,你随便指一下她就能明白。
“你那个if后面多打了个分号。”我说。
她猛地转过头来,眼睛瞪得圆圆的,像是被吓了一跳。
我和她对视了大概两秒钟。
她的眼睛很大,瞳孔的颜色是深棕色,在阳光下透出一种琥珀色的光。但此刻那双眼睛里写满了“你是谁你怎么出现在这里”的疑惑,还有一点点被人看到代码的窘迫。
“……你在看我的代码?”她问。
“你敲键盘的声音太大了。”我说,“不是你故意的,是我的耳朵不放过我。”
她愣了一下,然后低下头看了看自己的键盘,又抬起头看我。
“……那你说我if后面怎么了?”
“多了一个分号。”我指了指屏幕上的第17行,“这里,if语句后面直接加分号,不管条件成不成立,后面的代码都会执行。”
她盯着那行代码看了几秒钟,然后“啊”了一声。
“真的诶……”
她删掉那个分号,重新编译,运行。
这次没有报错。
但输出还是不对。
她转过身来看我,眼神里多了一种东西:像是在说“你都看了,那就看完吧”。
我叹了口气。
“你那个else-if链里,第三个条件的判断写反了。”我说,“大于号应该是小于号。”
她又盯了几秒钟,然后改了,运行。
绿色的字跳了出来。
Accepted。
她盯着那个绿色的单词,嘴角慢慢翘起来。
那是一个很小的弧度,但很真。
然后她转过头来,认真地看了我一眼。
“你好厉害。”她说。
“没有。”我说,“只是你犯的错太基础了。”
“你也是搞竞赛的吗?”
“……以前是。”
“以前?那现在呢?”
“现在不是了。”
她歪了歪头,好像没听懂我在说什么。
然后她合上笔记本电脑,站起来,转过身面对我。
这时我才注意到她比我矮不少,大概只到我肩膀的位置。
她微微仰起头看着我,眼睛里带着一种认真的光。
“我是丛雨。”她说,“二年三班的。”
“方铨铎。高一。”
“高一?那你是我学弟诶。”
“嗯。”
她笑了起来,笑得眼睛弯弯的,露出一种和她年龄不太相符的狡黠。
“学弟,你帮了我,我得报答你。”
“不用。”
“不行。”她摇了摇头,“一码归一码。你是哪个社团的?”
“我没加社团。”
“信息学竞赛社团呢?”
“……不打算加。”
“为什么?”她皱起眉,“你明明很厉害啊。”
我没有回答。
不是不想回答,是不知道怎么回答。
总不能跟一个刚认识不到五分钟的学姐说“我因为省选失利决定放弃竞赛”吧。
太矫情了。
丛雨看着我,好像从我脸上的表情读出了什么。
她没有追问,而是换了一种语气。
“这样吧,”她说,“你帮了我,我就帮你一个忙。”
“什么忙?”
“帮你‘重新’喜欢上竞赛。”
我愣了一下。
这话说得太突然了,突然到我完全不知道该怎么接。
“你不用现在答应。”她摆了摆手,已经开始收拾东西了,“但我会证明给你看的。对了——”
她把电脑装进包里,抬起头来看着我。
“Ciallo~”
“……什么?”
“Ciallo~”她又说了一遍,发音很奇怪,像是把Ciao和Hello拼在一起,“这是打招呼的方式。你要记住哦,学弟。”
然后她背着书包跑了出去,马尾辫在身后一甩一甩的。
我站在原地,愣了好一会儿。
Ciallo?
什么鬼。
五
那天下午最后一节是自习课。
丛雨不知道什么时候从二年三班跑下来了,直接坐在我旁边。
“你怎么来高一教室了?”我问。
“自习课嘛。”她说,“老师不管的。”
她打开笔记本电脑,又开始敲代码。
我没说话,拿出数学卷子开始做。
但她敲键盘的声音总是在我耳朵边上晃来晃去。
不是因为她敲得响,而是因为我控制不住自己的余光往她屏幕上飘。
她在做一道贪心题。
思路大概是——但她把贪心策略写错了,导致答案偏大。
我看了一会儿,忍不住了。
“你不应该按重量排序,应该按价值重量比排序。”
她转过头来看我,眼神里带着一种“抓到了”的笑意。
“你不是说不搞竞赛了吗?”
“……”
我被她噎住了。
“你还说不搞竞赛,”她笑着说,“你看我的代码比我看得还认真。”
“我只是——”
“只是什么?”
“只是看不下去。”
“那就别看了。”她往旁边挪了挪,给我让出半个屏幕,“一起看。”
我没有动。
她看着我,眼神忽然变得认真起来。
“方铨铎,你因为什么不搞竞赛了?”
“……因为输了一次。”
“就一次?”
“就一次。”
她沉默了几秒钟,然后说了一句让我意想不到的话。
“你知道我去年NOIP考了多少分吗?”
“多少?”
“零分。”她说,“因为我电脑死机了,代码没有保存。”
我愣住了。
“那你今年……”
“今年继续考啊。”她说得很轻松,好像在说“今天食堂吃什么”一样,“零分怎么了?零分就不考了?那我不是白学了?”
她看着我,眼睛里有光。
“方铨铎,你比我厉害多了。你都能帮我调代码了。你都这么厉害了,为什么不继续?”
我没有说话。
因为她的每一句话都像一根针,扎在我那些“不想搞了”的理由上。
那些理由好像一下子变得很薄,一戳就破。
六
“这样吧。”丛雨说,“你想不想加入信息学竞赛社团?”
“……我又不是没加过社团。”
“我们社团不一样。”她说,“我们社团的社长超可爱的,副社长也很好看,还有一个学姐特别厉害——当然不是我,是另一个。”
“你这是在推销吗?”
“对啊。”她毫不掩饰地笑了,“我在拉你入伙。”
“……”
“而且——”她凑近了一点,压低声音,“入社之后可以随时用机房。学校只有社团的人才能拿到机房的钥匙哦。”
这个消息倒是让我动了一下。
十一学校的机房,我在暑假参观的时候见过。双屏电脑、机械键盘、白板墙上贴满了算法的思维导图。
那个地方,我确实想去。
但我还在犹豫。
“我考虑一下。”我说。
“行。”丛雨点了点头,没有逼我,“考虑好了告诉我。但你考虑的时候——”
她指了指我放在桌上的那本数学卷子。
“你做题的时候,手指在敲桌面。”
“所以?”
“敲的节奏是Ctrl+S。”
我低下头看了看自己的右手。
我的手指确实在桌面上轻轻敲着——保存。
Ctrl+S。
我在机房写代码的时候,每隔十几秒就会按一次Ctrl+S,这已经是肌肉记忆了。
丛雨笑起来。
“你看,你的身体比你的嘴巴诚实。”
她说得很轻,但每个字都敲在我心里。
七
放学后,我没有直接回家。
我走到科技楼楼下,站在那棵银杏树旁边,仰头看着四楼的窗户。
那里就是信息学竞赛社团的活动室。
暑假的时候,我在那间机房里看到一个女生在写树形DP。那是丛雨吗?还是别人?
我不知道。
我站在那里,风吹过来,银杏树的叶子沙沙作响。
手机震了一下。
是陈雨翔。
「想好了吗?搞不搞?」
我看着这条消息,想了很久。
然后我打了四个字:
「再看看吧。」
没有发送。
我删掉了,重新打:
「我应该会搞。」
发送。
三秒钟后,他回了:「就知道你会这么说。」
我笑了一下,把手机收起来。
我转身准备走,余光扫到科技楼门口有一个人影。
丛雨站在那里,手里拿着笔记本电脑包,看着我。
不知道她站了多久。
我们对视了一秒钟。
她忽然举起一只手,朝我挥了挥。
“Ciallo~”
然后转身走进楼里,马尾辫在身后甩了一下。
我站在银杏树下,看着她消失在楼道里。
风吹过来,很凉快。
我忽然觉得——
也许这个学校,没有那么糟。
-
二
一
第二天早上,我走进教室的时候,丛雨已经坐在第一排靠窗的位置了。
她今天换了一种发型——头发没有像昨天那样两侧用绳结扎起,而是简单地披散在肩上,只有左边别了一个红色的小发夹。校服穿得很整齐,领口的红色领结打得端端正正,裙摆的白色花边在晨光中显得格外干净。
她面前摊着那本《算法竞赛进阶指南》,正在翻页。
我在她身后停了一下。
“早。”
她抬起头,看了我一眼,嘴角微微翘起。
“早呀,学弟。”
然后她伸出右手,比了一个奇怪的手势——拇指和食指弯成一个圈,其他三根手指微微张开——在脸颊旁边画了一下。
“Ciallo~”
“……”
我愣了一秒。
“你这是什么仪式?”
“打招呼的仪式。”她一本正经地说,“你要回我。”
“……Ciallo。”
“不行,太僵硬了。要有感情。”
我深吸一口气。
“Ciallo。”
“嗯,还行。”她满意地点了点头,然后低下头继续看书。
我走到自己的座位上坐下。
阳光从窗户照进来,落在她的头发上,泛着一层淡淡的光。
我忽然想起昨天傍晚,她在科技楼门口回头跟我挥手的样子。
Ciallo。
这个奇怪的词,在她嘴里说出来,好像确实有一种特别的温度。
二
上午第一节是数学课。
老师讲的是集合的基本概念——并集、交集、补集,这些东西我初三就已经烂熟于心了。我百无聊赖地在草稿纸上画图,画着画着,画成了一个状态转移图。
等我反应过来的时候,纸上已经写满了转移方程。
dp[i][j] = max(dp[i-1][j], dp[i][j-1])……
我盯着那行字看了几秒钟,然后把草稿纸翻了一面。
说好的不搞竞赛呢。
但丛雨昨天说的话,一直在我脑子里转。
“你比我厉害多了。你都能帮我调代码了。你都这么厉害了,为什么不继续?”
不是因为她夸了我。
而是因为她说话的时候那种理所当然的语气。
好像“厉害”就应该“继续”,这个逻辑对她来说是自明的,不需要论证。
但我需要。
我需要一个理由,为什么要在那个闷热的机房里坐一整天,为什么要在深夜里对着WA的红色字体发呆,为什么要让自己一次又一次地输。
我不知道这个理由是什么。
但我知道,昨天晚上回家之后,我打开了电脑。
我没有刷题。我只是打开了OJ,看了一眼自己的账号。
ID:fqd0911。
注册日期:两年零三个月前。
提交记录:一千二百三十七次。
通过率:百分之六十一。
我盯着那些数字看了很久。
然后我关掉了浏览器,上床睡觉了。
但今天早上,我把那本落了灰的《算法竞赛进阶指南》放进了书包里。
三
午休的时候,丛雨又跑来了。
她这次没有问我任何问题,直接坐到了我旁边的空位上,打开笔记本电脑,开始敲代码。
我努力把注意力集中在手里的英语阅读题上。
但她今天用了机械键盘——虽然是小声的那种红轴,但那哒哒哒的声音在我耳朵里就是清清楚楚。
“你不能小点声吗?”我说。
“我已经很小声了。”她头也没抬,“是你耳朵太灵了。”
“……”
你又知道我耳朵灵了。
我放下笔,忍不住瞥了一眼她的屏幕。
是一道贪心题。看起来像是区间调度类的,有n个时间段,要选出最多的不重叠区间。
这个题我做过。
我看了十秒钟,发现她连排序规则都搞错了。
她按结束时间排的序,但那个排序函数的比较器写反了符号,导致排出来的是从大到小的逆序。
“你那个排序,符号写反了。”我说。
丛雨停下手,转过头来看我。
她的眼睛很大,瞳孔是深棕色的,在午后的光线里透出一种琥珀色的光泽。此刻那双眼睛正带着一种“我就知道你会看”的笑意。
“你不是说不看了吗?”她说。
“我没看。”
“那你怎么知道我写反了?”
“……”
我无话可说。
她又笑了笑,把那个符号改过来,重新运行。
Accepted。
绿色的字跳出来的那一刻,她的表情变得柔和了很多。不像刚才那种狡黠的笑,而是一种纯粹的、发自心底的开心。
那种开心,我见过。
是第一次学会用for循环做了一个1到100的加法程序时的开心。是第一次在OJ上看到绿色“Accepted”时的开心。
是那种还没有被“省选”“排名”“压力”这些东西污染过的、最初的快乐。
“方铨铎。”她忽然叫我全名。
“嗯?”
“你昨天说你不搞竞赛了。”
“嗯。”
“那你帮我调代码的时候,手速比我快一倍。”
“……”
“你看到绿色AC的时候,眼睛亮了一下。”
“我没有。”
“你有。”她看着我,语气忽然认真了起来,“你只是不承认。”
我沉默了几秒钟。
“丛雨学姐。”我说,“你为什么这么执着要我搞竞赛?”
她想了想。
“因为——我不喜欢看到有才华的人浪费自己。”
“你怎么知道我有才华?”
“因为你帮我调代码的时候,”她说,“你看问题的方式和我不一样。”
“哪里不一样?”
“我会盯着代码看,一行一行找bug。你是直接看逻辑,一眼就能看出来哪里不对劲。”
她顿了一下。
“这个不是练出来的。这是脑子里长出来的东西。”
我张了张嘴,想说点什么,又不知道该说什么。
“所以,”她合上笔记本电脑,“今天下午放学,跟我去社团吧。”
“我还没决定。”
“你不用决定。”她站起来,“你只需要看一眼。看一眼又不亏。”
她走了两步,又回过头来。
“对了,午饭吃了吗?”
“没。”
“食堂一楼今天做红烧排骨。”她笑了,“你不去的话,我就帮你带一份回来?”
“……我自己去。”
“那我们在食堂等你。”
“等我?”
“嗯。”她眨了眨眼,“社团的几个人今天都在食堂吃饭。正好介绍给你认识。”
说完她就走了。
马尾辫在身后一甩一甩的。
我看着她的背影,忽然觉得很头疼。
这个人,怎么比陈雨翔还难缠。
四
午饭时间,食堂人很多。
十一学校的食堂有两层,二楼是套餐窗口,一楼是自选菜和风味窗口。我拿了一碗米饭、一份红烧排骨、一碟炒青菜,端着托盘找位置。
“方铨铎——这边!”
丛雨的声音从角落传过来。
我循声望过去,看到丛雨坐在一张四人桌的靠墙位置,正在朝我招手。
她对面的两个人,我都不认识。
其中一个女生看起来和我差不多大,扎着一个高马尾,校服穿得整整齐齐,坐姿很端正。她的脸很小,五官精致,皮肤很白,嘴唇上涂了一层薄薄的唇彩。
但最引人注意的是——她在吃饭的时候还在看书。
一本很厚的书,封面朝下扣在桌上,我只能看到书脊上有“算法竞赛”几个字。
另一个女生坐在丛雨旁边,正低头吃一碗面。
她留着短发,发尾微微内扣,刘海用小发夹别在一边。校服的领口扣子解开了一颗——和昨天在图书馆遇到时一模一样。
我走到桌前。
“你好呀,方铨铎。”那个短发女生抬起头来,朝我笑了笑。
因幡爱瑠。
“你怎么在这里?”我有些意外。
“科学英才社团的嘛。”她笑着说,“来跟信息学社团的同学交流感情。”
“你们两个社团不是两个独立的吗?”我问。
“独立是独立的,”因幡爱瑠用筷子挑起一根面条,“但社长之间可以私下约饭啊。”
她朝对面那个正在看书的女生努了努嘴。
“这位是——”
“三司绫濑。”那个女生抬起头来,合上了手里的书。
她看着我,表情很淡,但眼神里带着一种审视。
“你就是方铨铎?”
“嗯。”
“我是三司绫濑。高二。信息学竞赛社团的社长。”
她站起来,朝我伸出一只手。
手很小,手指修长,指甲修得很整齐,涂了一层透明的甲油。
我和她握了一下。
手很凉。
“丛雨跟我说了你的事。”三司绫濑重新坐下来,“你能帮她调代码到她AC?”
“那道题不难。”我说。
“嗯,丛雨的题确实不难。”她点了点头,“但你能看到她犯的错,说明你的基础不错。”
“还行。”我说。
“初三省选第十七名。”三司绫濑忽然说出这个数字,我愣了一下,“我查过了。你的名字在今年的省选排名表上。”
“……”
“虽然你用的是初中生的学籍,但你能在那个级别的比赛里排到第十七,说明你的水平比大多数高一新生都高。”
她说话的方式很直接,像是在陈述一个事实。
“所以,”她看着我,“你今天下午来社团吗?”
“他说他还没决定。”丛雨在旁边插嘴,声音里带着一丝“看我多努力”的得意。
三司绫濑看了丛雨一眼,然后看回我。
“来一趟吧。看一眼又不吃亏。”
这句话和丛雨说的几乎一模一样。
我严重怀疑她们俩之前对过台词。
“我考虑一下。”我说。
“行。”三司绫濑点了点头,没有再问。她重新拿起筷子,夹了一块红烧肉放进嘴里,咀嚼的动作很慢,很优雅。
因幡爱瑠在旁边笑了。
“三司学姐从来不催人的。”她说。
“催人没用。”三司绫濑咽下那块肉,端起水杯喝了一口,“想来的自然会来,不想来的催也不来。”
她放下水杯,看了我一眼。
“但我希望你来。”
那双眼睛里没有什么特别的表情,但这句话本身,就很重了。
五
下午最后一节课是自习。
教室里很安静,大家都在低头写作业。但我一个字都看不进去。
我的目光一直在第一排靠窗的位置和窗外之间来回飘。
丛雨今天下午没来高一的教室。她大概在二年三班上自习。
那个位置是空的。
空的座位,空的桌面。
只有窗台上放着一个水杯,是她的。
我收回目光,看着手里的数学卷子。
第二道大题的解析几何,我算了三遍,答案都不一样。
不是我不会做,是我的脑子不在状态。
我的脑子里在回放三司绫濑说的那句话。
“但我希望你来。”
她说这句话的时候,语调很平,没有加什么修饰。
但正是因为太平了,反而让我觉得她是认真的。
不是客套。不是礼貌。
是真的希望你来。
我放下笔,把桌上的东西收进书包里。
旁边的同学看了我一眼:“你走了?”
“嗯。”
“还有一节课呢。”
“我有事。”
我站起来,背上书包,走出了教室。
六
科技楼在校园的西边,和教学楼隔着一个小花园。
下午四点的阳光已经没有那么烈了,斜斜地照在灰色的楼体上,把影子拉得很长。
我在楼前站了两秒钟,然后推门进去了。
电梯没开,我走了楼梯。
四楼。
走廊很安静,只有远处某个教室里隐约传来老师的讲课声。
我走到那扇门前。
「信息学竞赛社团活动室」
门上贴着一张A4纸,边角已经翘起来了,看样子贴了很久。
门没有关死,露出一条缝。
我推开门。
活动室里的样子和昨天差不多。
双屏的台式机靠墙排成一排,机械键盘安静地躺在桌上。书架上的书码得很整齐。白板墙上贴着几张思维导图,有分治、图论、动态规划。
但今天,房间里不止两个人。
三司绫濑坐在靠窗的位置,手里捧着一杯奶茶,正在和一个扎高马尾的女生说话。那个女生的背影我有点眼熟——是刚才在食堂看书的那个。
“哦?来得挺快。”三司绫濑抬头看到我,嘴角微微上扬,“进来坐。”
我走进去,在她对面的位置坐下。
“这是鞍马流。”三司绫濑指了指角落里那个戴耳机的男生,他头都没抬,“高三,我们社团最强的。”
“他不理人的。”那个扎高马尾的女生补充道,语气里没有什么责怪的意思,好像在陈述一个事实。
“这是常陆茉子。”三司绫濑又指了指那个女生,“高二,和我们一批的。”
“你好。”常陆茉子看着我,点了点头。她戴着眼镜,镜片后面的眼睛很沉静。“我听说过你。”
“什么?”
“初三省选第十七。”她和三司绫濑一样,也提到了这个数字,“人大附中过来的。”
“……嗯。”
“十一学校和人大附中的风格不太一样。”她说,“但竞赛这个东西,在哪搞都一样。”
“常陆茉子同学去年NOIP省一。”三司绫濑在旁边补充,“全省第六。”
我看着常陆茉子。
她看起来不像一个“全省第六”的人。
不是水平不像,而是那种气场——陈雨翔拿到省一的时候,走路都在飘。但常陆茉子坐在那里,安静得像一面湖。
“丛雨呢?”我问。
“她还没来。”三司绫濑说,“她今天值日。”
话音刚落,门被推开了。
“Ciallo~”丛雨探进半个脑袋,脸上带着笑。
她走进来,手里拿着一个文件夹,头发又扎成了昨天那样子——两侧用红紫色的绳结绑起来,垂在胸前。
“方铨铎,你来了。”她看到我,眼睛亮了。
“嗯。”
“我就知道你回来。”她在旁边坐下,把文件夹放在桌上,“社长,我把他带来了,有什么奖励?”
“奖励你下周多打一场模拟赛。”三司绫濑面无表情地说。
丛雨的脸立刻垮了下去:“……那还是不要奖励了。”
“所以,”三司绫濑看着我,“方铨铎,你是打算加入我们社团了?”
“我想先看看。”我说,“你们的训练方式是什么样的?”
三司绫濑靠在椅背上,喝了一口奶茶。
“每周三场模拟赛,周一周四周六。周日讲题复盘。周二周五是自由训练时间,可以自己刷题,也可以互相讨论。每月一次外出比赛,北京市范围内的。”
她顿了一下。
“我不用劝你,你自己看了就知道。”
我没有说话。
常陆茉子忽然开口了。
“方铨铎,你省选的时候哪道题失分了?”
我愣了一下。
“第二题。图论的,有向图,我做成了无向图。”
常陆茉子点了点头,没有说话。
但三司绫濑的表情变了。
她放下奶茶,看着我。
“你知道那道题的满分是多少吗?”
“两百分。”
“你拿了多少?”
“四十分。只有第一组样例的数据过了。”
三司绫濑沉默了一秒。
“如果你把那道题做对了,你省选排名是多少?”
我没有回答这个问题。
因为我知道答案。
如果那道题做对了,我应该能进前十。
不是省队——因为初中生的身份进不了——但排名会在前十以内。
在初中生里,是第一。
“所以你是因为一道题放弃了整个竞赛。”三司绫濑说。
“不是一道题。”我说,“是我自己不够好。”
“不够好就练。”常陆茉子说。
她说话的语气没有任何起伏,但正是那种平淡,让我觉得她不是在安慰我,而是在说一个事实。
一个她每天都在执行的事实。
“方铨铎。”丛雨忽然叫我的名字。
我转过头去,她正看着我。
“你今天帮我看的第一道题,如果让你自己写,你要多久?”
“……十分钟吧。”
“我写了四十分钟。”她说,“而且还没写对。”
她顿了顿。
“你比我厉害。但你不是天生就比我厉害的。你也是练出来的。你既然能练到比我厉害,你为什么不能练到比你更厉害的人厉害?”
这话有点绕。
但我听懂了。
“丛雨,你今天话有点多。”三司绫濑说。
“因为我觉得他不应该浪费。”丛雨说得很直接,没有任何掩饰。
活动室里安静了几秒钟。
角落里的鞍马流忽然摘下了耳机。
他转过头来,看了我一眼。
那是一个很普通的动作,但不知道为什么,所有人都把目光投向他。
“你想来,就来。”他说。
声音不大,有点沙哑。
“不想来,就回去。”
然后他重新戴上耳机,转回去继续敲代码。
全程不超过五秒钟。
三司绫濑笑了。
“行了,鞍马前辈都开口了。”她站起来,走到我面前,伸出一只手。
“方铨铎,欢迎加入信息学竞赛社团。”
我看着她的手。
那只手的指甲修得很整齐,涂着透明的甲油。
手指修长。
很白。
我犹豫了一秒钟。
然后我握了上去。
“我还没同意。”我说。
“你握了就是同意了。”三司绫濑握紧了我的手,力气比我预想的大得多。
“这是我们社团的规矩。”
丛雨在旁边笑了。
“Ciallo~”
常陆茉子推了推眼镜,没有说话。
但她的嘴角,好像动了一下。
七
那天晚上,我回到家的時候,陈雨翔给我发了消息。
「怎么样?去社团了吗?」
「去了。」
「决定加入了?」
「嗯。」
「哈哈哈哈哈我就知道。」
他打了这几个字之后,又发了一条:
「你最后还是搞了。」
我盯着这条消息看了很久。
是啊。
最后还是搞了。
丛雨说我的身体比嘴巴诚实。
三司绫濑说我握了手就是同意了。
但她们都不知道的是——
我走进那间活动室的时候,看到白板墙上那些思维导图的时候,闻到机房特有的那种淡淡的清凉油味道的时候,听到键盘敲击声的时候——
我的心里有什么东西,忽然松了。
不是“决定继续搞竞赛”的那种释然。
而是——我终于不用再假装自己“不搞了”。
我打开电脑,登录了OJ。
题目列表上,第一道是一个二分图匹配的问题。
我开始写代码。
手指放在键盘上的那一刻,我忽然觉得——
这个夏天,好像没有那么难熬了。
窗外的月亮很圆。
很亮。
陈雨翔又发了一条消息:「加油。」
我回了一个字:「嗯。」
然后把手机翻了过去,继续写代码。
-
三
一
加入社团后的第一个周一,我迎来了在十一学校的第一场模拟赛。
三司绫濑在社团群里发了一条消息:
「今天下午四点半,活动室集合。第一场模拟赛,所有人必须到。」
所有人。
我数了一下群里的人数——三司绫濑、常陆茉子、丛雨、鞍马流,再加上我,一共五个人。
五个人。
这就是信息学竞赛社团的全部成员。
我想起人大附中竞赛社团那个塞满三十多人的大机房,想起每次模拟赛前大家抢座位的混乱场面。十一学校这边,人少得有点冷清。
但冷清也有冷清的好处。
至少不用抢插座。
下午第二节课结束后,我收拾好书包,往科技楼走。
走到楼梯口的时候,身后传来一阵急促的脚步声。
“方铨铎——等一下!”
我回过头,看到丛雨正小跑着追上来。她今天穿着校服裙,跑起来的时候裙摆微微飘起来,两侧用绳结扎起的头发在胸前晃来晃去。
“你跑什么?”我问。
“我怕你找不到活动室。”
“……我去过一次了。”
“万一你忘了呢?”
她喘了两口气,脸颊泛着一层薄薄的红。十一学校的校服在她身上显得有点大,领口的红色领结歪了一边,大概是跑的时候弄的。
“你领结歪了。”我说。
“啊?”她低头看了一眼,“哦。”
她伸手把领结扶正,抬起头来看着我,笑了。
“走吧,学弟。”
她走在前面,步子不快不慢。走廊里的阳光从窗户斜照进来,把她的影子拉得很长,投在地板上,刚好和我的影子叠在一起。
二
活动室里,三司绫濑已经在了。
她今天换了一身便装——白色的短袖衬衫,深蓝色的百褶裙,脚上穿着一双白色的帆布鞋。头发没有扎起来,披散在肩上,发尾微微卷着。
她正站在白板前面,用马克笔写着什么。
听到门响,她回过头来。
“来了?坐。”
她在白板上写了几个字——
「模拟赛 1 2024.9.9」
字写得很好看,笔画干净利落,有点像印刷体。
“今天的模拟赛,一共三道题。”三司绫濑放下马克笔,拍了拍手上的灰,“难度分布是简单、中等、困难。时限两小时。题目在我OJ上建的比赛里,大家登录之后就能看到。”
常陆茉子坐在最靠墙的位置,已经打开了电脑。她今天戴了一副银框眼镜,镜片后面的眼睛专注地盯着屏幕。桌面上放着一个保温杯,杯盖打开着,冒着热气。
“茉子,你今天不用去数学竞赛那边?”三司绫濑问。
“请过假了。”常陆茉子头也不抬,“社长说了,信息学社团的活动优先。”
“那就好。”
角落里,鞍马流正往耳朵里塞耳机。他今天穿了一件黑色的连帽卫衣,帽子没有戴上,露出一头有点长的黑发。他面前的双屏电脑上已经打开了好几个窗口,代码编辑器、终端、OJ页面,排列得整整齐齐。
“鞍马前辈,今天的题对你来说应该不难。”三司绫濑说。
鞍马流没有回答,只是微微点了一下头。
丛雨坐在我旁边,正在手忙脚乱地登录OJ。她输错了两次密码,第三次才成功登进去。
“你密码都能忘?”我说。
“我没忘!”她瞪了我一眼,“是键盘不好用。”
“键盘是新的。”
“……那就是手指不好用。”
她说完这句话之后,自己先笑了。
“行了行了,别说话了。”三司绫濑拍了拍手,“比赛四点半准时开始,大家准备好。”
我看了一眼电脑右下角的时间。
16:28。
两分钟后,第一场属于我的模拟赛,就要开始了。
三
16:30,题目准时开放。
第一道题。
我读完题面,心里大概有了数。
是一道模拟题。题目描述了一个简单的图书管理系统,需要处理借书、还书、查询三种操作。数据范围不大,用数组模拟就能过。
但题目有几个坑——比如借书的时候如果书已经被借走了,要输出“Invalid operation”;还书的时候如果书本来就在馆里,也要输出同样的提示。
边界条件,分支判断。
这种题考的不是算法,是细心。
我开始写代码。
手指放在键盘上的那一刻,我忽然意识到一件事——
我已经很久没有在这种“比赛”的状态下写代码了。
整个暑假,我没有碰过OJ。上次认真做题,还是省选前的那段日子。
但我的手指没有忘。
include <iostream>
using namespace std;
int main() {
指尖在机械键盘上跳动,发出清脆的嗒嗒声。红轴的键程很短,回弹很快,手感比我以前在人大附中用过的薄膜键盘好太多了。
我写得很快。
但写到一半的时候,我的余光扫到了旁边的屏幕。
丛雨的屏幕。
她把题目读了三遍,光标还在第一行闪。
她在做什么?
我忍不住又看了一眼。
她正在定义一个结构体,用来存储图书的信息。但这个题的输入数据只有书号和操作类型,不需要储存额外信息,用数组标记一下借出状态就够了。
她写复杂了。
我张了张嘴,想说点什么,但忍住了。
比赛是自己的事。我不能帮她。
我把目光收回来,继续写自己的代码。
十五分钟后,我完成了第一题。
编译,通过。
测试样例,通过。
提交。
绿色的字跳了出来。
Accepted 100分
我靠在椅背上,长出了一口气。
四
第二道题。
是一道贪心题。
题面描述了一个会议安排的问题——有n个会议,每个会议有开始时间和结束时间,会议室只有一个,要安排尽可能多的会议。
经典的区间调度问题。
解法很简单:按结束时间排序,然后依次选择。
但这个题的数据范围很大,n最大到200000,需要用sort和贪心算法,时间复杂度O(n log n)。
我开始写。
写完之后,我意识到一个问题——排序的时候,如果两个会议的结束时间相同,应该选开始时间更晚的那个,这样才能给后面的会议留出更多空间。
我在比较函数里加了这个条件。
return a.end == b.end ? a.start > b.start : a.end < b.end;
测试样例,通过。
提交。
绿色的字。
Accepted 100分
四十五分钟,两题做完。
还剩一道。
五
第三道题。
我读完题面的时候,愣了一下。
题目描述很简短——
“给定一个N个节点的树,每个节点有一个权值。求树上最长的路径长度,使得路径上的权值之和等于0。”
树,权值和为0,最长路径。
这不是一道简单的题。
我想了想。
暴力做法是枚举所有路径,计算权值和,找最大值。但N最大到200000,O(n2)肯定过不了。
需要优化。
树形DP?但路径不是从根到叶子的,可以是树上的任意两个节点。
点分治?
我脑子里冒出了这个词。
点分治是处理树上路径问题的常用算法。每次找树的重心,把树分成若干子树,分别处理经过重心的路径,然后递归处理每个子树。
复杂度O(n log n)。
应该能过。
我开始写代码。
点分治的代码量不小。需要写寻找重心的DFS,需要写计算路径的DFS,需要写处理经过重心的路径的函数。
我写了四十分钟。
写完的时候,我看了一眼时间——17:15。
还有十五分钟。
我编译,通过。
测试样例——第一个样例通过了,第二个样例输出的结果比答案小了1。
哪里出了问题?
我检查了一遍代码。
路径权值和的存储方式是用一个数组标记每个深度对应的最大权值和,但我在标记的时候忘记清空了,导致不同子树的路径互相干扰。
我在递归处理每个子树之前,加了一个清空的步骤。
重新编译,测试。
第二个样例通过了。
第三个样例——通过了。
提交。
黄色的字跳了出来。
Pending
等待判题。
我盯着屏幕,心跳忽然快了起来。
OJ的判题服务器大概忙碌了几秒钟。
然后——
绿色的字。
Accepted 100分
两小时,三道题,三百分。
我做到了。
六
比赛结束后,三司绫濑站起来,走到白板前面。
“好,成绩出来了。”她在白板上写下了每个人的分数。
鞍马流:300分
方铨铎:300分
常陆茉子:300分
三司绫濑:270分
丛雨:130分
“鞍马前辈满分,不意外。”三司绫濑写完最后一个数字,转过身来,“方铨铎也满分,不错。茉子也满分。”
常陆茉子推了推眼镜,没有说话。
“我第三题只拿了一半的分,”三司绫濑说,“贪心策略写错了,边界条件没处理好。”
她看向丛雨。
“丛雨。”
“到!”丛雨条件反射一样站了起来。
“坐坐坐,不用站起来。”三司绫濑笑了一下,“你第一题做了多久?”
“……五十分钟。”丛雨的声音越来越小。
“五十分钟做一道模拟题?”
“我写复杂了。”她低下头,声音闷闷的,“我写了一个类,还写了继承……”
活动室里安静了一秒。
然后常陆茉子说话了。
“你不应该用类。”
语气很平淡,没有批评的意思,只是在陈述事实。
“模拟题的数据量小,用数组就够了。”
“我知道。”丛雨的声音更小了,“我就是……忍不住。”
“忍不住想写优雅的代码?”我说。
丛雨抬起头看着我,眼睛里有委屈,也有惊讶。
“你怎么知道?”
“因为你第一题的结构体定义了六个成员变量,但只有两个用上了。”
她张了张嘴,想说什么,又闭上了。
三司绫濑拍了拍手。
“行了,别笑话她了。”她说,“丛雨的优点是代码风格好,缺点是代码风格太好。这个慢慢改。”
她看向我。
“方铨铎,你今天表现不错。但第三题的思路讲一下,我想听听你是怎么做的。”
我站起来,走到白板前,拿起马克笔。
“我用了点分治。”
我在白板上画了一棵树。
“先找重心,把树分成若干子树。然后对于经过重心的路径,用DFS记录每个深度对应的最大权值和,更新答案。最后递归处理每个子树。”
三司绫濑看着白板上的图,点了点头。
“点分治的码量不小,你能在四十分钟内写完,说明你的代码实现能力不错。”
“还行。”我说。
“但你有一个地方可以优化。”角落里传来一个闷闷的声音。
所有人都转过头去。
鞍马流摘下了耳机。
他站起来,走到白板前面,从我手里拿走了马克笔。
动作很自然,好像这是他的习惯。
“你计算深度的时候,用了一个数组来记录每个深度对应的最大权值和。”他在白板上写了几行伪代码,“但你没有压缩路径。如果树的深度很大,这个数组会很大。”
“我用了map。”我说。
“map的logN可以接受,但不是最优。”他顿了一下,“你可以用vector,每处理完一个子树就清空。”
“这样空间复杂度是O(n)。”我说。
“对。”他点了一下头,把马克笔放回白板上,转身回到自己的座位上,重新戴上耳机。
整个过程不到两分钟。
三司绫濑看着我,嘴角微微上扬。
“鞍马前辈一般不讲话。他跟你讲了两分钟,说明他看好你。”
我看向角落里的鞍马流。
他已经在看下一道题了,好像什么都没发生过。
“但他最后说的是我的代码不够好。”我说。
“在鞍马流眼里,没有人的代码是足够好的。”常陆茉子开口了,“包括他自己。”
她喝了一口保温杯里的水,继续说。
“去年省选之前,他把自己的代码重写了七遍。每一遍都改了至少三分之一。”
七遍。
我看着角落里那个沉默的背影,忽然觉得——
这个社团里的人,每个人都有自己的方式。
鞍马流的方式是“不够好就重写”。
常陆茉子的方式是“不够好就练”。
丛雨的方式是“不够好就写到好为止”。
三司绫濑的方式是“不够好就带着大家一起变好”。
那我的方式是什么?
我还没有答案。
但从今天开始,我有了想要找到这个答案的理由。
七
活动结束后,我和丛雨一起走出科技楼。
天已经黑了,校园里的路灯亮着,把地面照成一片温暖的橘黄色。
“你今天最后一题做完了吗?”我问她。
“没有。”她说,“第三题我看都没看。前两题花了我全部时间。”
“第一题你应该做快一点的。”
“我知道。”她低下头,“我就是忍不住想写好看一点。”
她走了两步,忽然停下来,转过身看着我。
路灯的光落在她脸上,把她的五官照得很柔和。她两侧用绳结扎起的头发垂在胸前,校服领结歪了一边——又跑歪了。
“方铨铎,你今天拿了满分,高兴吗?”
“还行。”
“还行?”她歪了歪头,“你笑一下会死吗?”
“我没笑吗?”
“你笑了吗?”
我确实没笑。
但我心里笑了。
“好吧,”我说,“我很高兴。”
“这还差不多。”她转过身,继续往前走,“你知道吗,你今天站在白板上讲点分治的时候,三司学姐一直在看你。”
“……看我做什么?”
“看你讲题的样子啊。”丛雨的语气里带着一种说不清的情绪,“她可能在想——终于来了一个能干活的人了。”
“你也能干活。”
“我?”她笑了一声,“我能干什么?我能给大家端茶倒水。”
“你代码写得很认真。”
“认真有什么用?认真又不能当饭吃。”
“认真可以让你的代码少几个bug。”
她忽然停下脚步,转过头来瞪着我。
“方铨铎,你是在夸我还是在损我?”
“夸你。”
“你明明在损我!”
她伸手在我肩膀上拍了一下,力气不大,但我能感觉到她的手指很凉。
“你手怎么这么凉?”我问。
“写代码写的。”她说,“活动室的空调太冷了。”
她把双手举到嘴边,呵了一口气,搓了搓。
“你看,冻红了。”
路灯下,她的手指确实泛着微微的红。
“下次带个暖手宝。”
“不用,”她把手放下来,朝我笑了一下,“下次我坐你旁边,你体温高,我蹭你的。”
她说完这句话,转身继续走了。
步子轻快了很多。
马尾辫在身后一甩一甩的。
我站在原地,愣了两秒钟。
然后我跟上她的脚步,走在她旁边,没说话。
夜风从操场的方向吹过来,带着初秋特有的凉意。
“方铨铎。”
“嗯?”
“你今天真的很厉害。”
“嗯。”
“我说真的。”
“我知道。”
“那你明天还会来吗?”
“会。”
她笑了。
路灯把她嘴角的弧度照得很清楚。
“那就好。”她说,“Ciallo~”
又是那个奇怪的词。
但这次,我没有觉得奇怪了。
“Ciallo。”我回她。
她笑得更开心了,伸出右手在脸颊旁边画了一下那个手势。
“你看,你记住了。”
“嗯,记住了。”
十一学校的夜路上,我们的影子被路灯拉得很长很长,投在地面上,叠在一起,又分开,又叠在一起。
身后科技楼的灯还亮着。
活动室的窗口,有人在里面写代码。
那是鞍马流。
他大概又在改自己的代码了。
第七遍,或者第八遍,或者第九遍。
我不知道。
但我知道——明天我还会来。
不是为了竞赛。
是为了这些人。
和这些人的方式。
-
四
-
一
模拟赛结束后的第二天,社团群里多了一条新消息。
三司绫濑:「今天下午社团活动取消,改为线上讲题。晚上八点,群里语音。」
取消?
我盯着这条消息看了几秒钟。
周一才打完模拟赛,周二就取消活动,这不太像三司绫濑的风格。她上周才说过“每周三场模拟赛,雷打不动”,结果第二周就雷打了?
丛雨给我发了一条私聊。
「你知道为什么取消吗?」
「不知道。」
「三司学姐今天下午要去教务处开会,好像是社团经费的事。」
「社团经费?」
「嗯,我们社团的电脑该换了,有几台还是五年前的机器。三司学姐一直在跟学校申请。」
我转头看了一眼活动室里那些双屏电脑。显示器看起来挺新,但主机的配置我心里没底。信息学竞赛用的机器不需要多高的配置,但编译大项目的时候,CPU和内存还是有一定要求的。
五年前的机器,编译一个2k行的代码估计要卡半天。
「学校批了吗?」我问。
「还没。所以三司学姐今天下午又去争取了。」
我放下手机,想了想。
三司绫濑这个人,表面上看是一个整天喝奶茶看漫画的慵懒社长,但她做的事情——安排训练计划、管理社团经费、跟学校沟通——每一件都是实实在在的“社长工作”。
她说的“我主要负责社团运营,打比赛是副业”,不是谦虚,是真的。
晚上七点五十分,我戴上耳机,打开了社团群的语音通话。
三司绫濑已经在线了。常陆茉子随后加入,头像亮起来的时候,她的麦克风没有声音,过了几秒才传来一声轻轻的“喂”——像是在确认设备正常。
丛雨最后一个进来,一开口就是一句带着笑意的“Ciallo~”,声音从耳机里传出来,比平时听上去更清脆一些。
“鞍马前辈今天不来。”三司绫濑说,“他在准备下周的省选模拟赛,我让他不用参加讲题了。”
“鞍马前辈还要打省选模拟赛?”丛雨问。
“他今年最后一次机会了。”三司绫濑的声音压低了一些,“高三了,你懂的。”
高三了。
我忽然意识到一件事——鞍马流的“最后一次机会”,和我的“第一次机会”,是在同一条时间线上。
不同的是,他的时间比我少一年。
三司绫濑:“好,先讲第一题。谁来讲?”
语音频道里安静了一秒。
“方铨铎,你来讲。”三司绫濑点了我的名。
“为什么是我?”
“因为你是唯一一个第一题满分的人。”
“常陆茉子也满分。”
“茉子话太少,她讲题大家会睡着。”
我听到丛雨在那边笑了一声。
“行吧。”我打开OJ,翻出第一题的题目,“这道题是一个图书管理系统,考察的是模拟和边界条件处理……”
我开始讲。
从题目的大意,到数据结构的选型,到边界条件的判断,到代码实现的细节。我讲得很细,细到每一个if-else的分支逻辑都说了一遍。
讲完之后,三司绫濑说了一句话。
“你讲得比我想象的好。”
“……你想象中我讲得很差?”
“不是差,是——你以前是不是给别人讲过题?”
我愣了一下。
“我初中同学,陈雨翔。”我说,“我刚开始学的时候,他给我讲。后来我学得快了,就换我给他讲。”
“讲题是最好的学习方式。”常陆茉子忽然开口了,声音很轻,像是自言自语。
“茉子说得对。”三司绫濑说,“方铨铎,以后讲题的任务就交给你了。”
“我不是社团的讲题老师。”
“你是。”三司绫濑的语气不容置疑,“反正你也要讲给陈雨翔听,顺便讲给我们听,不亏。”
这是什么逻辑?
但我没再反驳。
因为她说得对——讲题确实是最好的学习方式。
二
第二题是贪心。
三司绫濑自己来讲。
她的声音通过耳机传过来,和平时在活动室里听到的不太一样。平时的三司绫濑说话慢吞吞的,带着一种慵懒的调子,但今天她的语速明显快了不少,每一个步骤都讲得很清晰。
“这道题的贪心策略是按结束时间排序,然后依次选择。但是要注意,如果两个会议的结束时间相同,应该选择开始时间更晚的那个。”
她顿了顿。
“这个条件很多人会漏掉。我这次就是漏了,所以只拿了70分。”
“三司学姐也会犯这种错?”丛雨问。
“当然会。”三司绫濑笑了一下,“我又不是鞍马流那种做不错题的人。”
“鞍马前辈也会犯错。”常陆茉子说。
“他犯的错和我们犯的错不是一个级别的。”三司绫濑说,“他的错是‘最优解不够优’,我们的错是‘思路根本不对’。”
这个总结很精准。
我想起鞍马流昨天在白板上给我改代码的样子——他不是在纠正错误,而是在寻找“更好的方式”。
那种人,和我们是两种生物。
“好,第二题讲完了。”三司绫濑说,“第三题——点分治,方铨铎你来。”
“怎么又是我?”
“因为今天只有你和我讲了题,茉子和丛雨都没讲。茉子不想讲,丛雨——丛雨你第三题做了吗?”
“没有。”丛雨的声音小得像蚊子。
“那就方铨铎来讲。”
我叹了口气,打开第三题的代码。
“这道题是树上路径权值和为0的最长路径问题。我用的算法是点分治。”
我把自己写的代码从头到尾讲了一遍。
从找重心开始,到计算路径,到更新答案,到递归处理。
讲完之后,常陆茉子问了一个问题。
“你找重心的时候,为什么用了一个全局数组来标记节点是否被删除?”
“因为点分治的过程中,每次找到重心之后,要把重心从树中删除,然后递归处理剩下的子树。用一个布尔数组来标记已经处理过的节点,可以避免重复访问。”
“那你的数组每次都要清空吗?”
“不用。每一层递归都只标记当前子树内的节点,递归返回之后不需要清空,因为父节点不会再访问已经被删除的节点。”
常陆茉子沉默了两秒钟。
“这个做法是对的。”她说。
她说“是对的”的时候,语气没有任何变化,但我知道——在她的标准里,这句话的分量不轻。
三
讲题结束后,语音频道没有立刻关闭。
三司绫濑问了一句:“大家还有什么问题吗?”
没有人回答。
“那我说一下这周的安排。”她的声音变得认真起来,“周三下午正常活动,内容是自己刷题。周四下午模拟赛。周五下午——社团招新。”
“招新?”丛雨的声音忽然亮了起来,“我们要招新了?”
“嗯。学校统一安排的社团招新日,这周五下午第三节课后,操场旁边那条路,每个社团一个摊位。”
“我们社团也要摆摊?”丛雨问。
“要。”
“我们有摊位吗?”
“有。但我需要人帮忙看摊。”
语音频道里安静了一秒。
“我去吧。”常陆茉子说。
我有点意外。常陆茉子是那种不太喜欢社交的人,让她去看摊,相当于让一条鱼去爬树。
“茉子你确定?”三司绫濑显然也这么想。
“我可以坐在那里写代码。”常陆茉子说,“有人来问就回答问题。”
“……那不就是你平时的样子吗?”
“对。”
三司绫濑沉默了两秒钟,大概是在衡量“常陆茉子坐在摊位后面写代码”这件事对招新的影响。
“行吧。那我也去。丛雨你也来。”
“好!”丛雨的声音里带着明显的兴奋,“我可以穿cos服吗?”
“不可以。”
“为什么!”
“社团招新,不是漫展。”
“可是穿cos服比较吸引人啊。”
“吸引来的人是想搞竞赛的,还是想来看cos的?”
丛雨被噎住了。
“方铨铎。”三司绫濑忽然叫我。
“嗯?”
“你也来。”
“我也要看摊?”
“不用你看摊。你负责——站在摊位旁边。”
“……站在旁边做什么?”
“当吉祥物。”
我差点被自己的口水呛到。
丛雨在语音那头笑出了声,笑声清脆得像铃铛。
“方铨铎当吉祥物!”她笑得喘不过气,“那我要在摊位前面挂个牌子——‘信息学竞赛社团,入社送吉祥物一个’。”
“送?”我说,“我不是赠品。”
“那就是买一送一的那个‘一’。”
“……”
三司绫濑没笑。
“周五下午四点,操场旁边那条路。大家都别迟到。”她顿了一下,“尤其是你,方铨铎。吉祥物迟到了,摊位就没有灵魂了。”
语音频道关闭。
我摘下耳机,靠在椅背上。
吉祥物。
这就是我在社团里的定位吗?
四
周五下午,社团招新日。
北京十一学校的操场旁边有一条主路,平时是学生来往教学楼和食堂的必经之路。今天那条路的两侧摆满了社团摊位,花花绿绿的海报从这头贴到那头,整个校园弥漫着一种类似于庙会的气氛。
我走到信息学竞赛社团的摊位时,差点没认出来那是我们的摊位。
一张长桌上铺着深蓝色的桌布,桌上放着一台笔记本电脑、一摞社团介绍折页、一盒笔、一沓报名表。桌子的正中央摆着一个用A4纸折的立牌,上面用马克笔写着四个大字——
「欢迎来聊」
字迹清秀工整,是三司绫濑的手笔。
桌子后面坐着三个人。
常陆茉子在最左边,戴着耳机,面前摊着那本《算法竞赛进阶指南》,正埋头看书。她今天穿了校服,头发扎成高马尾,几缕碎发从额头垂下来,在风中微微晃动。一个路过的高一男生停下来看了她两秒钟,然后走开了。
三司绫濑坐在中间,手里拿着一杯奶茶,正在和旁边社团的社长聊天。她今天穿了一件浅灰色的针织开衫,里面是白色T恤,领口露出银色吊坠项链的一小截。头发披散在肩上,发尾微微卷着,整个人看起来比平时温柔了不少。
丛雨坐在最右边,面前摊着一张海报,正在用彩色笔往上画什么。她今天扎了双马尾,两侧用红色的缎带绑着——不是平时用的那种绳结,而是更宽更亮的缎带。缎带在风里飘来飘去,衬得她整个人像从画里走出来的一样。
校服的白色衬衫熨得很平整,红色领结系得端端正正,裙摆的白色花边在阳光下白得发亮。
我走过去的时候,她抬起头来,眼睛亮了。
“方铨铎!你来了!”
她站起来,朝我招手。
“你看你看,我画的海报!”
她把那张海报翻过来给我看。
海报上画了一个卡通版的电脑屏幕,屏幕上写着“ACCEPTED”,屏幕前面坐着一个扎双马尾的Q版小人——画的是她自己。
海报的最上方用彩色艺术字写着:「信息学竞赛社团,等你来AC!」
最下方有一行小字:「Ciallo~」
她连海报都要写Ciallo。
“怎么样?”她仰着头看着我,眼神里带着期待。
“还不错。”我说。
“还不错?就还不错?”
“很好看。”
她满意地笑了,把海报重新铺在桌上,用胶带把四角贴住。
“这下应该能吸引人了。”
“你刚才说cos服更吸引人。”
“海报和cos服不一样!”她理直气壮地说,“海报是专业的,cos服是——是另一种专业。”
另一种专业。
她的嘴是真的会绕。
五
招新开始后,陆陆续续有人过来。
提问的内容五花八门。
“信息学竞赛是不是很难?”——一个戴眼镜的男生问。
“难。”三司绫濑说,“但也没有你想的那么难。”
“需要什么基础吗?”另一个女生问。
“不需要。”丛雨抢答,“我进社团的时候连数组都不会用。”
“你现在会了吗?”三司绫濑问。
丛雨瞪了她一眼。
常陆茉子一直没怎么说话。有人来问问题的时候,她会抬起头来,用最简短的句子回答,然后低下头继续看书。
但这种“高冷”反而让一些人望而却步。
一个高二的男生在摊位前站了很久,想找常陆茉子搭话,但每次话到嘴边又咽了回去。
最后他问我:“那个戴眼镜的学姐,叫什么名字?”
“常陆茉子。”
“她……是不是不太爱说话?”
“不是不爱说话,”我说,“是不太爱跟陌生人说话。”
他点了点头,拿了一张报名表走了。
丛雨凑过来,小声说:“你刚才那句话说得挺好的。”
“哪句?”
“不太爱跟陌生人说话。”她学了一遍,“你是在说茉子学姐,还是在说你自己?”
我看了她一眼。
“都有。”
她笑了笑,没再说话。
六
招新的后半段,人渐渐少了。
常陆茉子放下书,从保温杯里倒了杯水喝。三司绫濑的奶茶早就喝完了,她把空杯子放在桌上,拿了一把扇子扇风。
丛雨趴在桌上,脸贴着桌面,双马尾垂在桌子两侧。
“好累啊——”她拖长了声音,“比打模拟赛还累。”
“你打模拟赛的时候可没站着。”三司绫濑说。
“我打模拟赛的时候坐着,但是脑子在动。站了一天,脑子没动,腿在动。”
“你的腿也没动。”
“我的腿没动,但我的身体以为它动了,就很累。”
这个逻辑我没听懂。
但我没问。因为她的表情看起来确实很累。
“要不要去买水?”我问她。
她抬起头,眼睛亮了一下。
“你要帮我买?”
“嗯。”
“那我喝——蜜桃乌龙。不加糖,去冰。”
“要求还挺多。”
“是你问我的。”她笑了,“你要不问,我就不要求了。”
我从摊位旁边站起来,准备往食堂的小卖部走。
三司绫濑叫住了我。
“方铨铎。”
“嗯?”
“帮我带一杯乌龙奶茶。加珍珠,三分糖。”
“常温?”
“去冰。”
常陆茉子也抬起头来。
“一杯白水就好。”
“不加珍珠不加糖?”我问。
常陆茉子看了我一眼,没有说话。
她的眼神好像在说——白水加什么珍珠加什么糖。
“知道了。”
我转身往小卖部走。
走出几步之后,身后传来丛雨的声音。
“方铨铎!”
我回过头。
她趴在桌上,双马尾垂在桌子两侧,两只手伸过头顶,朝我比了一个大大的心形。
“Ciallo~”
路过的几个同学都转过头来看她。
她没有不好意思。
她的笑容在午后的阳光里亮得有点晃眼。
我赶紧转过身,快步往前走。
耳根有点热。
七
招新结束后,我们开始收拾摊位。
折页箱子里少了大概二十份——不算多,但也不算少。报名表收了九张,其中有三张只写了名字和班级,联系方式那一栏空着。
“这三个人是来凑数的。”三司绫濑把那三张抽出来,放到一边,“另外六张还可以。”
“六个人?”丛雨凑过来看,“那今年能招到六个?”
“不一定。”三司绫濑说,“填了报名表不等于真的会来。有些人只是一时冲动,过几天就忘了。”
“那我们要不要打电话提醒他们?”丛雨问。
“不用。”三司绫濑把报名表收进文件夹,“想来的自然会来。”
这句话她说过。
招新那天在食堂,她也说过差不多的话。
“想来的自然会来,不想来的催也不来。”
我当时觉得这是她做事的方式。但现在想想,这大概也是她对待生活的态度——不强求,不挽留,来去随你。
但这种“不强求”的背后,是她自己扛下了所有。
社团经费、活动安排、训练计划、招新宣传——全都是她一个人在张罗。
鞍马流只管写代码。
常陆茉子只管刷题。
丛雨只管——管Ciallo。
而我呢?
我连“只管”什么都还没想清楚。
“方铨铎,发什么呆?”三司绫濑拍了拍我的肩膀。
“没什么。”
“帮我把桌子搬到教学楼里。”
我弯腰抬起桌子的一边,她抬另一边。
桌子不重,但她的力气比看起来小很多,抬了两步就开始喘。
“你力气这么小?”我说。
“我是社长,不是搬运工。”她说,“你是吉祥物,吉祥物就应该干体力活。”
吉祥物。
她又提这个。
我加了几分力气,把桌子的大部分重量接过来,她那边轻松了不少。
“这样行吗?”我问。
“行。”她笑了,“你这个吉祥物还挺好用。”
从操场到教学楼这段路,我们抬着桌子走过去。夕阳把地面染成橘红色,把我们的影子投在地上,一长一短。
“方铨铎。”
“嗯?”
“你觉得今天的招新怎么样?”
“还行。”
“还行是怎么样?”
我想了想。
“我觉得——来咨询的人很多,但真正对竞赛感兴趣的人不多。”
“对。”三司绫濑点了点头,“大多数人听到‘信息学竞赛’四个字就被吓跑了。”
“那为什么还要招新?”
“因为剩下的那几个人里,有可能会出下一个鞍马流。”
她顿了一下。
“也有可能出下一个你。”
“我?”
“你不也是从‘什么都不会’开始的吗?”
我沉默了。
是啊。
我也不过是从“什么都不会”开始的。
是陈雨翔递给我那本《信息学奥赛一本通》的时候,我翻了两页,什么都没看懂。
是丛雨帮我调代码的时候,我看了一眼就发现了那个分号。
没有人生来就会写代码。
每个人都是从“什么都不会”开始的。
八
傍晚六点多,天已经快黑了。
丛雨没有和其他人一起走。
“我值日,晚一点走。”她说,“方铨铎,你等我一下?”
“等你做什么?”
“陪我去活动室拿个东西。”
“你自己不能拿?”
“能。但一个人走夜路有点害怕。”
我看了她一眼。
她说“害怕”的时候,表情和平时不太一样。平时那双总是亮晶晶的眼睛,此刻微微低垂着,睫毛在眼下投下一小片阴影。
“行。”我说。
丛雨值日的时间不长。大概二十分钟后,她背着书包从教学楼里跑出来,双马尾在身后一甩一甩的。
“走吧。”
我们沿着主路往科技楼走。
路灯已经亮了,地面上的光晕一圈一圈的,像水波。
“今天的招新,你觉得有用吗?”丛雨问。
“不知道。”我说,“但至少有人知道了有我们这样一个社团。”
“那就够了。”
路过操场的时候,足球场上还有几个人在踢球。皮球砸在地上的声音砰砰砰的,和远处的蝉鸣混在一起。
“方铨铎。”
“嗯?”
“你为什么要搞竞赛?”
这个问题她以前问过。
但我那时候没有认真回答。
“因为——想证明自己。”
“证明什么?”
“证明我还可以。”
丛雨沉默了几步。
“那你觉得你现在证明了吗?”
“还没。”
“那你打算证明到什么时候?”
“不知道。”
她又沉默了。
然后她忽然笑了。
“那你慢慢证明吧。反正我一直在。”
她说完这句话,加快了脚步。
双马尾在路灯下一晃一晃的。
我没有跟上去。
我站在那里,看着她的背影越走越远。
风从操场的方向吹过来,带着初秋特有的凉意。
她的声音从前面飘回来。
“方铨铎——走啊——活动室要锁门了——”
我迈开步子,追上她。
“你刚才说的话,是什么意思?”
“哪句?”
“反正我一直在。”
丛雨没有回头。
“就是字面意思啊。”
她的声音被风吹得有点散。
但我听得很清楚。
-
五
一
社团招新结束后的那个周末,群里多了一个新人。
三司绫濑:「这是新加入的成员,高二,从外校转来的。」
新人发了一条消息:「大家好,我是沉鱼旋。请多关照。」
沉鱼旋。
这个名字有点特别。“沉鱼”这个词让我多看了一眼——沉鱼落雁的沉鱼。很少有人会用这个词当名字。
丛雨几乎是在同一秒回复的:「欢迎欢迎!Ciallo~」
常陆茉子发了一个句号。在她的语言体系里,句号就是“已读”的意思,不代表任何情绪。
鞍马流没有出现。
我也跟着发了一条:「欢迎。」
沉鱼旋回了一个笑脸表情。中规中矩,看不出什么特别的。
但我点开她的头像看了一眼——是一个水彩画风格的花卉图案,淡紫色的绣球花。朋友圈封面是一片海,没有发过任何动态。
没什么信息量。
我把手机放下,继续写作业。
二
周一早上,我第一次见到沉鱼旋。
教室门被推开的时候,我正在低头翻数学卷子。
走廊的光从门口涌进来,我抬起头,看到一个人影逆光站在门口。
她穿着十一学校的校服——白色的夏季衬衫,深蓝色的百褶裙,领口的红色领结系得很规整。
但我最先注意到的是她的头发。
长发,黑得像墨,从肩膀两侧垂下来,发尾微微打着卷。刘海用一枚银色的发夹别在一边,露出光洁的额头。
她站在门口,微微侧了一下头,像是在打量教室里的布局。
阳光从她身后照过来,在她的发丝边缘镀上一层金色的光。
教室里安静了一瞬。
然后赵老师从她身后走进来,拍了拍手。
“同学们,这学期有一位转学生加入我们班。”
她走到讲台旁边,转过身面对大家。
“自我介绍一下吧。”
她抬起头,目光扫过全班。
那双眼睛是深棕色的,在日光灯下几乎接近黑色。瞳孔很大,眼尾微微上挑,带着一种说不清的冷淡和距离感。
“沉鱼旋。”她说,“从杭州转来的。”
声音不大,但很清楚。
说完这三个字,她没有再开口。
赵老师等了两秒,看她没有要继续的意思,主动接了话:“沉鱼旋同学之前在杭州学军中学,成绩非常优秀。大家多关照她。”
教室里响起了稀稀拉拉的掌声。
沉鱼旋微微点了一下头,然后目光在教室里扫了一圈,最后落在了——
我旁边的空位上。
她走过来,拉开椅子,坐下。
动作很轻,几乎没有发出声响。
她把书包放在桌边,从里面拿出一个笔记本电脑包——黑色的,很薄,看起来是MacBook。
然后她取出一本《算法竞赛进阶指南》。
和我的一样。和丛雨的一样。
但她的那本书看起来很旧了——封面磨出了毛边,书脊上有好几道折痕,书页之间夹着密密麻麻的便签条,粉色、蓝色、黄色的都有。
比丛雨的书多了至少三倍。
我心里动了一下。
这个人,不简单。
三
第一节课下课后,丛雨从前排跑过来。
“你就是新来的同学?”她在沉鱼旋面前站定,眼睛亮亮的,“你好你好,我叫丛雨。二年三班的。”
“沉鱼旋。”她抬起头,看了丛雨一眼。
“你也搞信息学竞赛?”丛雨的目光落到桌上那本《算法竞赛进阶指南》上。
“嗯。”
“太好了!我们社团又多了个人!”丛雨转头看向我,“方铨铎,你看到了吗?新同学也搞竞赛!”
“我看到了。”我说。
“那你还不表示一下?”
“表示什么?”
“表示欢迎啊。”
我想了一下,对沉鱼旋说:“欢迎加入。”
沉鱼旋看了我一眼。
那一眼很短,大概只有一秒钟。
但那一秒钟里,她的目光在我的脸上停了一下,然后移开了。
“谢谢。”她说。
丛雨搬了把椅子坐到沉鱼旋旁边,开始给她介绍社团的情况。
“我们社团一周三场模拟赛,周一周四周六。周二周五自由训练。周日讲题复盘。社长是三司绫濑学姐,人超好,就是喜欢喝奶茶。还有常陆茉子学姐,代码写得特别干净……”
丛雨说了一大串,沉鱼旋一直安静地听着,偶尔点一下头。
她的坐姿很端正,背挺得笔直,双手放在膝盖上。
我注意到一个细节——她的指甲涂了一层透明的甲油,修剪得很整齐。左手中指上戴着一枚银色的细戒指,很朴素,不仔细看注意不到。
“对了,”丛雨忽然问,“你之前在学军中学,那边的竞赛训练方式是怎样的?”
“每天早上两小时,下午三小时。”沉鱼旋说,“周末全天。”
“全天?那不是很累吗?”
“还好。”
沉鱼旋的回答永远很短。
但她的声音很好听——不是那种甜的、媚的,而是一种很干净的声音,像冬天的泉水,清冽但不太冷。
“那你来十一学校,是因为搬家吗?”丛雨又问。
沉鱼旋沉默了一秒。
“算是。”
我注意到她说“算是”的时候,目光稍微低了一下。
但只有一瞬间。
下一秒她抬起头,表情已经恢复了平静。
四
午休的时候,丛雨把沉鱼旋带到了活动室。
“社长!新成员来了!”
三司绫濑正在喝奶茶,听到声音抬起头来,上下打量了一下沉鱼旋。
“沉鱼旋?”
“是。”
“高二?”
“是。”
“之前在学军中学?”
“是。”
三司绫濑放下奶茶,站起来,走到沉鱼旋面前。
她比沉鱼旋高半个头,低头看着她的眼神带着一种审查的意味。
“学军中学的信息学竞赛很强。”三司绫濑说,“你怎么转来十一学校了?”
这个问题丛雨也问过。
但三司绫濑问的方式不一样。她的语气里没有好奇,只有审视。
沉鱼旋没有躲闪。
“家庭原因。”她说了四个字。
三司绫濑盯着她看了两秒钟。
“行。”她点了点头,没有追问,“欢迎加入。”
她朝沉鱼旋伸出手。
沉鱼旋握了一下。
“你的水平怎么样?”三司绫濑问。
“省选第十五。”沉鱼旋说。
活动室里安静了一秒。
省选第十五。
比我高两名。
比丛雨高——丛雨没有参加省选。
常陆茉子从书本里抬起头来,看了沉鱼旋一眼。
那一眼比以前看我的时候更长一些。
“杭州赛区的省选比北京卷。”常陆茉子说。
“我知道。”沉鱼旋说。
“你知道什么?”
“你们考的是NOIP,我们考的是联合省选。难度不一样,分数线不一样,不能直接比。”
常陆茉子没有再说话。
但她的表情——如果我没有看错的话——是认可。
“好。”三司绫濑拍了拍手,“那今天下午的自由训练,你就跟大家一起。”
她指了指角落里的空位。
“那个位置是你的。电脑密码是123456,记得改。”
沉鱼旋点了点头,走过去坐下。
她打开电脑的动作很熟练——开机、登录、打开浏览器、进入OJ,整个过程不超过三十秒。
然后她开始做题。
我瞥了一眼她的屏幕。
她在做一道树链剖分的题。
省选难度的。
五
下午自由训练的时候,活动室里很安静。
键盘声在空气中交错着,像不同乐器演奏的同一首曲子。
鞍马流的键盘声最快,嗒嗒嗒嗒嗒,几乎没有停顿。常陆茉子的键盘声很轻,像是怕打扰到别人。丛雨的键盘声断断续续的,每写几行就会停下来想一会儿。
沉鱼旋的键盘声介于鞍马流和常陆茉子之间。
不快不慢,很均匀。
像是呼吸。
我坐在她斜后方,能看到她的侧脸。
她侧脸的线条很柔和,鼻梁高挺,下颌线干净利落。睫毛很长,微微向上翘着,在眼下投下一小片阴影。校服的衬衫领口扣得很严实,露出一截白皙的脖颈。
她很专注。
专注到连呼吸都放慢了。
我收回目光,继续做自己的题。
但我的余光一直能感觉到她的存在。
不是因为她在动。
恰恰相反——是因为她太安静了。
安静到像一尊雕像,只有手指在键盘上移动的时候,你才能确认这是一个活人。
六
自由训练结束后,三司绫濑让大家分享一下今天做的题。
鞍马流做了一个NOI难度的数据结构题,全程没有看任何参考资料。常陆茉子做了一套模拟赛的题,拿了290分——丢的10分是因为一个int没开long long。
丛雨做了三道题,全都是基础题。她讲的时候有点不好意思,声音很小,但三司绫濑一直在点头,没有打断她。
轮到沉鱼旋的时候,她站起来。
“我做的是树链剖分。”她说。
“哪道题?”三司绫濑问。
“洛谷P3384。”
“模板题?”三司绫濑的语气有点意外。
“对。”
“你的水平做模板题?”
沉鱼旋沉默了一秒。
“我想确认一下十一学校的OJ环境和之前用的有没有差异。”
这个回答很得体。
但我在想另一个问题——省选第十五名的人,开学第一天在活动室里做模板题,真的是为了“确认环境差异”吗?
还是说,她在隐藏什么?
我把这个疑问压了下去。
不是因为我不好奇。
而是因为我注意到——沉鱼旋说“模板题”这两个字的时候,眼角微微垂了一下。
那个表情,我在镜子里见过。
是藏了什么东西的表情。
七
傍晚,我和丛雨一起走出科技楼。
沉鱼旋走在我们前面几步远的位置,书包背得很端正,步幅不大不小。
“你觉得沉鱼旋这个人怎么样?”丛雨忽然问。
“什么怎么样?”
“就是——感觉。”
“没感觉。”
“你骗人。”丛雨歪着头看我,“你今天下午看了她至少五次。”
“你怎么知道?”
“因为我看了你六次。”
“……”
我一时间不知道该说什么。
丛雨好像也意识到了自己说了什么,脸颊微微红了一下,但很快恢复了正常。
“我是说,”她清了清嗓子,“她看起来不太像搞竞赛的人。”
“为什么不像?”
“搞竞赛的人,身上都有一种——怎么说呢,一种‘轴’气。”丛雨比划了一下,“就是那种‘我非要AC’的倔强感。她身上没有那种东西。”
“可能人家比较沉稳。”
“不是沉稳。”丛雨摇了摇头,“是——好像这些东西对她来说都不太重要。”
这句话让我想了一下。
丛雨平时看起来大大咧咧,但她对人的感知其实很敏锐。
她说的“好像这些东西对她来说都不太重要”,我也有类似的感觉。
沉鱼旋做题的时候,不像在“做题”。
更像在“完成任务”。
两者之间的区别,很难用语言描述。但如果你也搞竞赛,你会懂。
“算了,不想了。”丛雨伸了个懒腰,“反正她是新同学,我们好好对她就好了。”
她转头看着我。
“方铨铎。”
“嗯?”
“你也要好好对她。”
“我什么时候对人不好了?”
“你对我就不太好。”
“我怎么对你不好了?”
“你都不主动找我说话。”
“你每次都是主动来找我说话的。”
“那是因为你太闷了!”她瞪了我一眼,“我要是不主动找你,你是不是一辈子都不会主动跟我说话?”
我想了想。
“……可能会。”
“你看!”她用手指戳了一下我的肩膀,“所以你要改。”
“改什么?”
“改掉你的闷。”
她说完这句话,加快了脚步,追上了前面的沉鱼旋。
“沉鱼旋同学!”
沉鱼旋停下脚步,回过头。
“今天第一天来,感觉怎么样?”丛雨问。
“……还行。”沉鱼旋说。
“有什么不习惯的地方吗?”
“没有。”
“那就好。”丛雨笑着拉住沉鱼旋的胳膊,“走,我带你逛逛校园!十一学校很大的,你初来乍到肯定不熟。”
沉鱼旋被丛雨拉着往前走,没有反抗。
但她回过头来,看了我一眼。
那一眼很短。
但这一次,她的目光在我脸上停了两秒。
不是好奇,不是打量。
更像是在确认什么。
然后她转过头去,跟上了丛雨的脚步。
我站在原地,看着两个背影越走越远。
一个活泼,一个安静。
一个是夏天的风,一个是秋天的泉。
我忽然想起陈雨翔说过的话。
“十一学校的女生比人大附中多。”
他当时说这话的时候,肯定没想到——
不仅有女生。
还有一个从杭州转学来的、名字叫“沉鱼”的、让人捉摸不透的女生。
我从口袋里掏出手机,给陈雨翔发了一条消息。
「我们社团来了个新人。」
「男的还是女的?」
「女的。」
「你看你看,我就说吧。」
「但从杭州转来的。」
「杭州?叫什么?」
「沉鱼旋。」
对面沉默了很久。
「沉鱼旋?」
「你认识?」
「不认识。但这名字——怎么像小说里的人。」
我笑了一下。
是啊。
像小说里的人。
但我现在活的,不是小说。
是每一天都在写代码、每一天都在调试、每一天都在WA和AC之间反复横跳的真实生活。
我把手机收起来,追上前面那两个背影。
风从操场的方向吹过来,带着秋天才有的桂花香。
丛雨的笑声从前面飘过来。
沉鱼旋安静的侧脸在夕阳里被镀上一层暖色。
十一学校的秋天,好像刚刚开始。
-
六
一
九月的北京还残存着夏天的尾巴。
赵老师在周五的班会上宣布了一个消息——下周一全年级停课一天,去游泳馆进行“水上活动”。
“不是体育课,是年级统一的活动。”她推了推眼镜,“自愿参加,不强制。不想去的同学可以在教室里自习。”
“游泳馆在哪儿?”有人问。
“学校北门对面,走路十分钟。”
教室里响起一阵嗡嗡的讨论声。有人兴奋,有人无所谓,有人在讨论要不要带泳衣。
我没什么感觉。游泳这种事,对我来说和跑步一样,只是运动而已。
但丛雨显然不是这么想的。
班会结束后,她从第一排跑过来,双手撑在我的课桌上,眼睛亮得像两颗星星。
“方铨铎!下周一去游泳馆!”
“我看到了。”
“你会游泳吗?”
“会。”
“游得怎么样?”
“能浮起来,不会淹死。”
“那就够了!”她直起身子,双手合十拍了一下,“太好了,终于有机会看到你穿泳衣的样子了。”
“……你看我穿泳衣做什么?”
“好奇啊。”她说得很理所当然,“你平时穿校服看起来瘦瘦的,我想看看你有没有肌肉。”
“你一个女生,说这种话不害臊吗?”
“不害臊。”她笑了,马尾辫在身后晃了晃,“我是学姐,学姐看学弟,天经地义。”
这是什么歪理。
但我还没来得及反驳,她已经转身跑了。
跑到教室门口的时候,她回过头来。
“Ciallo~周一见!”
马尾辫消失在门框外。
我叹了口气,把目光收回来。
然后我看到沉鱼旋。
她坐在我旁边——上周转学来之后,她就一直坐这个位置。此刻她正低着头,手里握着一支笔,在草稿纸上写着什么。
但笔尖没有动。
她的手指捏着笔杆,指节微微发白。
“沉鱼旋?”我叫了一声。
她抬起头。
那双深棕色的眼睛里,有一瞬间的慌乱。
但只有一瞬间。
下一秒,她的表情恢复了平静。
“什么事?”
“你周一去吗?”
“……不确定。”
她低下头,继续写东西。
但笔尖还是没有动。
二
周一早上,天气很好。
天蓝得透明,阳光把校园照得亮晃晃的,像是夏天不肯走。
年级统一租了大巴,把我们送到学校北门对面的游泳馆。
那是一个标准尺寸的室内游泳馆,五十米泳道,水质很清,能一眼看到池底的蓝色瓷砖。泳池两侧有看台,看台上有塑料椅子,供不下水的人坐着。
更衣室里闹哄哄的,男生们嘻嘻哈哈地换衣服。
我换好泳裤,把校服叠好放进柜子里,走到泳池边。
阳光从高处的窗户照进来,在水面上投下一片一片的光斑,随着水波的晃动而碎成无数金色的碎片。
“方铨铎——这边!这边!”
丛雨的声音从泳池对面传过来。
她已经下水了,站在浅水区,水刚好没过她的腰。她穿着一件浅蓝色的连体泳衣,裙摆式的下摆在水中轻轻飘着。头发扎成了高马尾,用和泳衣同色系的发圈绑着,露出一截白皙的后颈。
水珠挂在她的肩膀上,在阳光下闪着光。
她朝我挥手,手臂划破空气的时候带起一串水花。
我看了一眼周围——好几个男生的目光都落在她身上。
这不奇怪。
丛雨在浅水区里站着的样子,确实很好看。
“下来呀!”她又喊了一声。
我沿着泳池边的扶梯下水。
水温比我想象的低一点,凉意从脚底蔓延到小腿,再到大腿。我适应了几秒钟,然后朝她走过去。
“你游得怎么样?”她问。
“我说了,能浮起来。”
“那你游一个我看看。”
我深吸一口气,埋进水里,游了一段蛙泳。
不算快,但动作还算标准。
浮出水面的时候,丛雨正站在不远处看着我,表情带着一种认真的审视。
“你的腿收得不够紧。”她说。
“你还会看泳姿?”
“我学过三年游泳。”她双手叉腰,语气里带着小小的得意,“自由泳、蛙泳、仰泳都会。蝶泳不太行,太累了。”
“那你给我示范一个。”
“好!”
她转过身,双手并拢举过头顶,然后整个人像一支箭一样扎进水里。
她的自由泳确实很好。
手臂划水的频率很快,但节奏很稳。打水的时候,脚面几乎不露出水面,整个人的身体线绷得笔直。
阳光透过水面的光斑落在她的背上,随着她的动作流动,像是一幅会动的画。
她游到对面,转身,又游回来。
浮出水面的时候,她甩了甩头发,水珠四溅。
“怎么样?”她用手背抹了一把脸上的水。
“很好。”我说。
“那你学我的动作,再游一次。”
“……你是来游泳的还是来当教练的?”
“都是。”
她笑了,笑得眼睛弯弯的。
三
我在泳池里泡了大概半个小时,然后上岸去拿水。
从更衣室出来的时候,我注意到看台的角落里坐着一个人。
沉鱼旋。
她穿着一件白色的短袖T恤和深蓝色的运动短裤——不是泳衣。
她坐在塑料椅子上,双腿并拢,双手放在膝盖上。头发没有扎起来,披散在肩上,发尾还带着一点潮气——大概是洗过脸或者洗过手的时候沾到的。
她低着头,在看手机。
但屏幕是暗的。
我走过去。
“你怎么没下水?”
她抬起头,看了我一眼。
“不想下。”
“为什么?”
“……不想就是不想。”
她的语气比平时更冷一些,像是在用冷淡来掩盖什么。
我在她旁边坐下。
泳池里的水声、笑声、喊声混在一起,从我们面前涌过去。
“你不喜欢水?”我问。
“不是。”
“怕水?”
“也不是。”
我沉默了几秒钟。
沉鱼旋也没有说话。
她低头看着自己的手机屏幕——黑着的,没有亮。手指在屏幕上无意识地划来划去,但什么应用都没有打开。
“我不会穿泳衣。”她忽然说。
声音很小,小到几乎被泳池里的水声盖过去。
“什么?”
“没什么。”
她站起来。
“我去买瓶水。”
她走了。
步子比平时快一些。
我看着她的背影消失在走廊的拐角处。
为什么“不会穿泳衣”?
这个念头在我脑子里转了一下,但没有找到答案。
也许是宗教信仰?也许是身体有什么不方便?也许是别的什么原因?
不管是什么,她不想说,我就不该问。
但那个背影,让我觉得有点奇怪。
她走路的姿势和平时不太一样。平时的沉鱼旋背挺得很直,步伐均匀,像一把尺子。但刚才她走的时候,肩膀微微内收,像是在把自己缩小。
像是不想让别人看到她。
四
沉鱼旋走之后没多久,丛雨也上岸了。
她用一条大毛巾裹住自己,湿漉漉的头发贴在脖子上,水滴顺着发梢往下淌。
“方铨铎,你有看到沉鱼旋吗?”
“她去买水了。”
“哦。”丛雨在我旁边坐下,用毛巾擦头发,“她今天没下水。”
“嗯。”
“你问她为什么了吗?”
“问了。她不说。”
丛雨擦头发的动作停了一下。
“她是不是有什么难言之隐?”
“不知道。”
丛雨把毛巾搭在肩膀上,沉默了几秒钟。
“我觉得她怪怪的。”丛雨说,“但不是那种让人不舒服的怪。是那种——她好像有很多事情没有告诉我们。”
“每个人都有自己的事。”我说。
“我知道。”丛雨点了点头,“但我希望她能信任我们。”
她转头看着我。
“方铨铎,你下次跟她说话的时候,温柔一点。”
“我哪里不温柔了?”
“你说话的样子——”她想了想,“像是在做阅读理解。每个字都对,但加起来就是不对。”
“……”
“你就不能多笑一下吗?多笑一下又不会少块肉。”
“你管得太宽了。”
“我是学姐,学姐管学弟,天经地义。”
她又说了一遍“天经地义”。
我发现她每次找不到道理的时候,就会用这个词。
五
午饭是在游泳馆旁边的餐厅吃的。
学校统一订的盒饭,每人一份,两荤一素,味道一般。
丛雨和常陆茉子坐在一起,两个人正在讨论一道DP题。常陆茉子用筷子蘸着汤在桌上画状态转移图,丛雨歪着头看,时不时点头。
三司绫濑坐在另一边,手里拿着一杯游泳馆小卖部买的奶茶——不是学校食堂的牌子,她好像对奶茶品牌没什么挑剔,只要是甜的就行。
鞍马流没有来。他大概是那种“自愿参加”一定会选“自习”的人。
沉鱼旋坐在最角落的位置。
她面前的盒饭几乎没有动过——米饭还是完整的方形,青菜只夹了一筷子,排骨咬了一口就放下了。
她手里拿着那本《算法竞赛进阶指南》,在翻页。
但我注意到她已经翻了好几次同一页。
“沉鱼旋。”我端着盒饭走过去,在她对面坐下。
她抬起头。
“你不吃饭?”我问。
“不饿。”
“你早上也没怎么吃。”
“……你观察得还挺仔细。”
她说这句话的时候语气带着一点刺。
我没有在意。
“你不下水,也不吃饭,那你今天是来做什么的?”
“年级活动,要点名。”
这个回答很实在。
我看着她。
她的刘海被游泳馆里的潮气浸得微微发软,贴在额头上。皮肤很白,在水汽里显得更白,几乎透明。睫毛上沾着一点水雾,眨眼的时候会微微闪光。
“你的头发湿了。”我说。
她伸手摸了一下刘海,好像这才意识到。
“可能是洗手的时候溅到的。”
“你洗个手能溅到刘海?”
她没有回答。
低下头,把那口咬了一口的排骨夹起来,放进嘴里。
嚼了一会儿。
咽下去。
然后她抬起头看着我。
“方铨铎。”
“嗯?”
“你有没有不想做、但非做不可的事?”
我想了想。
“有。”
“什么事?”
“中考。”
她嘴角动了一下——不是笑,是一种“我理解”的表情。
“那你做了吗?”
“做了。”
“结果呢?”
“来了十一学校。”
她看着我,那双深棕色的眼睛里有什么东西闪了一下。
“如果有一个选择,”她说,“你做了之后可能会失去很多东西,但你不做又会后悔一辈子——你会怎么选?”
我看着她的眼睛。
那双眼睛里有犹豫、有恐惧,还有一种很深的、不太敢说出来的东西。
“先做了再说。”我说。
“你不怕失去?”
“怕。但不做的话,连失去的资格都没有。”
她沉默了很久。
久到泳池里的水声都变得模糊了。
然后她低下头,拿起筷子,开始吃饭。
一口,两口,三口。
吃得很慢,但很认真。
六
下午活动结束,我们坐大巴回学校。
丛雨靠在我旁边的座位上,头发还没完全干,散发着一股淡淡的洗发水味道。她闭着眼睛,呼吸均匀,不知道是睡着了还是不想说话。
沉鱼旋坐在我前面一排。
她的侧脸在车窗透进来的光线里忽明忽暗。
大巴经过一段树荫很密的路,光线变成碎片,在她的脸上跳动。
她的表情很安静。
但那种安静不是真的安静。
是在用“安静”来掩盖别的什么东西。
我忽然想起她问我的那个问题。
“如果有一个选择,你做了之后可能会失去很多东西,但你不做又会后悔一辈子——你会怎么选?”
我当时说“先做了再说”。
但那是我的答案。
她的答案是什么?
她问这个问题,是因为她正在面临这样的选择吗?
大巴在红绿灯前停下来。
沉鱼旋转过头,看了我一眼。
眼神很短,但很重。
然后她转回去了。
大巴重新启动,窗外的阳光涌进来,把整个车厢照得明亮。
丛雨在睡梦中换了个姿势,头靠到了我的肩膀上。
我没有推开她。
沉鱼旋的背影在阳光里安静地坐着。
十一学校的九月,还没有结束。
-
七
一
暑假结束后的第一周,学校开了个奇怪的会。
“全国青少年信息学奥林匹克竞赛省级选拔赛——简称省选——将于明年四月举行。按照惯例,每个学校可以推荐三名选手直接进入第二轮。咱们学校今年有三个推荐名额。”
阶梯教室里坐满了人。信息学竞赛社团的全体成员、各班报名的学生、还有几个看起来像是被班主任硬拉来的凑数选手。日光灯管发出嗡嗡的低响,和窗外的蝉鸣混在一起。
说话的是刘彦博老师——信息学竞赛的总教练,三十出头,戴一副黑框眼镜,说话的时候喜欢用手指敲讲台,像是在敲键盘。
“推荐名额的分配方式,今年和往年不一样。”他推了推眼镜,“不再是教练组指定。而是通过校内选拔赛决定。”
阶梯教室里响起一阵窃窃私语。
“选拔赛定在十一月中旬。排名前三的同学,获得推荐名额。排名靠后的同学,也可以通过自主报名参加省选——只不过要从第一轮开始打。”
刘彦博顿了一下,扫了一眼全场。
“也就是说,校内选拔赛的名次,决定了你是直接进入省选第二轮,还是一轮一轮往上打。”
这句话说出来之后,阶梯教室里的气氛变了。
之前大家只是在“听通知”,现在每个人都在“算账”。
直接进入第二轮和从第一轮打起,区别太大了。省选第一轮的通过率不到百分之三十,而且第一轮的时间在三月,第二轮在四月。如果要从第一轮打起,意味着你要多准备一个月,多承担一轮被淘汰的风险。
而直接进入第二轮,你只需要准备好那四道题。
四道题,决定你是进省队,还是回家。
散会之后,丛雨从后排跑过来,马尾辫在身后一甩一甩的。
“方铨铎!你听到了吗?校内选拔赛!”
“听到了。”
“前三名有推荐名额!”
“嗯。”
“你觉得自己能进前三吗?”
我想了想。
“不知道。”
丛雨看了我一眼,没有追问。她知道我不是谦虚——我是真的不知道。社团里有鞍马流,有常陆茉子,有三司绫濑,还有新来的沉鱼旋。每个人的水平都是未知数。
“反正我要努力。”丛雨攥了攥拳头,“就算进不了前三,我也要从第一轮打上去。”
她说这话的时候,眼睛里有一种我很熟悉的光。
那是我在省选之前也有过的光。
沉鱼旋从我们身边走过去,没有停留。
她的背影在走廊尽头转了个弯,消失了。
我看了一眼丛雨,她也正在看沉鱼旋消失的方向。
“她最近好像心事重重的。”丛雨说。
“嗯。”
“你问过她吗?”
“问过。她不说。”
丛雨沉默了一会儿,然后轻轻叹了口气。
“算了,走吧。”
二
接下来的一个月,活动室里的气氛明显变了。
以前大家自由训练的时候,偶尔还会聊聊天——丛雨会抱怨某道题太难,三司绫濑会评价哪家奶茶好喝,常陆茉子会从书里抬起头来说一句“你们太吵了”。
但现在,键盘声成了唯一的语言。
每个人都在刷题。每个人都想进前三。
鞍马流来得比以前更早了。我每天早上七点到活动室的时候,他已经坐在角落里,面前的双屏电脑上开着代码编辑器。有时候他在写题,有时候他只是盯着屏幕发呆。但不管我来得多早,他永远都在。
我从来没问过他几点到。
因为我怕那个数字会让我觉得自己不够努力。
常陆茉子的训练方式和别人不一样。她不怎么刷题——至少不像我们那样一道接一道地刷。她花大量的时间看书,不是《算法竞赛进阶指南》那种书,而是更底层的——《算法导论》《具体数学》《计算机程序设计艺术》。
有一次我问她为什么不刷题。
她抬起头,推了推眼镜,说了四个字:“理解本质。”
我没听懂,但没敢多问。
丛雨是这个月里进步最大的人。她每天给自己定目标——今天做十道题,明天做十二道,后天做十五道。有时候她完不成,就会在活动室里待到很晚。
有一天下晚自习后,我路过科技楼,看到四楼的灯还亮着。
我走上去,推开门。
丛雨趴在桌上,脸埋在胳膊里,电脑屏幕还亮着。
她睡着了。
OJ的页面上,是一道红色的Wrong Answer。
我站在门口看了一会儿。
然后我走进去,从书包里拿出一件外套,披在她身上。
她动了一下,但没有醒。
嘴角挂着一丝口水。
我关了灯,轻轻带上门,走了。
三
沉鱼旋的变化是最奇怪的。
她做题的量没有增加,反而减少了。以前她每天做七八道题,现在只做三四道。但她花在每道题上的时间变长了——长得不像是在做题,更像是在想别的事情。
有一次自由训练的时候,我注意到她盯着屏幕看了整整十分钟,一个字都没打。
屏幕上是一道她前天就已经AC过的题。
“沉鱼旋。”
她没有反应。
“沉鱼旋。”
她猛地回过神来,转过头看着我。
那双深棕色的眼睛里,有一瞬间的空白。
“什么事?”
“你没事吧?”
“没事。”
她转回去,关掉了那道题,打开了另一道。
但我知道她在撒谎。
因为我看到她关掉那道题之前,屏幕上有一行代码里写着一个变量名。
那个变量名不是常见的i、j、k,也不是标准的英文单词,而是一个拼音。
chen。
沉。
她在想什么?
我没有问。
但我开始注意到一些以前没有注意过的细节。
沉鱼旋的头发比刚来的时候长了一些,发尾已经过腰了。她的校服衬衫永远是扣到最上面那颗扣子,领结系得端端正正,从来没有歪过。她的手很小,手指很细,指甲涂着透明的甲油,左手中指上那枚银色的戒指一直没有摘下来。
她在食堂吃饭的时候,总是把食物切成很小的块,然后慢慢地吃。她喝水的时候,会用纸巾把瓶口擦一下再喝。她走路的步伐很均匀,但有时候会忽然停一下,像是踩到了什么看不见的东西。
所有这些细节,单独拿出来都不算什么。
但放在一起,就构成了一种模糊的、说不清的感觉——
她在隐瞒什么。
四
周三下午,三司绫濑在活动室里贴了一张表。
「校内选拔赛报名表」
名字那一栏,已经写了四个人的名字。
鞍马流、常陆茉子、三司绫濑、丛雨。
“方铨铎,把你的名字写上去。”三司绫濑把马克笔递给我。
我接过笔,在第五行写下自己的名字。
“沉鱼旋呢?”丛雨问。
“她还没来。”三司绫濑看了一眼门口,“等她来了让她自己写。”
话音刚落,门开了。
沉鱼旋走进来,手里拿着一个文件夹。
“沉鱼旋,报名表在这,写名字。”三司绫濑指了指白板上的那张纸。
沉鱼旋走到白板前,拿起马克笔。
她的手停了一下。
然后她在第六行写下了自己的名字。
字迹很小,比所有人写的都小。
写完之后,她转身走回自己的座位,打开电脑。
整个过程没有看任何人。
丛雨看了我一眼,眼神里带着疑惑。
我没有说话。
但我也在疑惑。
她写名字的时候,手停了一下。
那一瞬间,她在想什么?
五
报名表贴出去之后,活动室里又多了一个人。
不是社团的成员,而是一个高二的男生,叫周远舟。他的信息写在报名表的第七行,字迹很大,一笔一划都很用力,像是要把纸戳穿。
周远舟之前没有参加过社团活动,据说一直是自己在刷题。他的成绩不差——去年NOIP提高组二等奖,差几分到省一。
他来活动室的第一天,就引起了注意。
不是因为他有多厉害,而是因为他太吵了。
“哇,这个键盘好用!红轴的吗?”
“鞍马学长!你是不是去年省选第七那个鞍马学长?我看过你的代码!你那个线段树的写法太牛了!”
“常陆学姐,你的保温杯里泡的是什么茶?闻起来好香。”
“丛雨学姐,你这个发卡好好看,在哪里买的?”
他像个行走的弹幕机,走到哪里说到哪里。
丛雨被他叫“学姐”的时候明显愣了一下——她是高二的,周远舟也是高二的,同年级不应该叫学姐。
“你不用叫我学姐。”丛雨说。
“那叫什么?”
“叫名字就行。”
“好的丛雨学姐。”
丛雨:“……”
我在旁边忍不住笑了一声。
丛雨瞪了我一眼。
六
周远舟的能力远比他的性格要靠谱。
他到活动室的第一天下午,花了两个小时把社团OJ上前十道没人做出来的题全部AC了。其中有一道是鞍马流卡了两天的题。
鞍马流看到那个绿色的Accepted时,难得地摘下耳机,看了一眼周远舟的方向。
什么话都没说。
但那一眼的意思是——“这个人有点东西”。
“周远舟,你之前在哪里搞竞赛的?”三司绫濑问。
“没有固定地方,就是自己在网上刷题。”他说,“我初中在郊区读的,学校连机房都没有,全靠一台破笔记本。”
他说这话的时候语气很轻松,好像“没有机房”这件事不是什么大不了的事情。
但我知道这意味着什么。
没有机房意味着没有教练,没有同学可以讨论,没有模拟赛可以参加。所有的信息都要自己上网找,所有的题目都要自己琢磨。
能在这种环境下拿到NOIP提高组二等奖,说明他的自学能力远超常人。
“行。”三司绫濑点了点头,“从现在开始,你就是社团的正式成员了。”
“真的?!”周远舟的眼睛亮了,“太好了!那我是不是也有资格参加校内选拔赛?”
“你已经报名了。”
“我知道,我的意思是——参加了选拔赛,如果成绩好,是不是也能拿推荐名额?”
三司绫濑看了他一眼。
“能。”
周远舟咧嘴笑了。
“那我就放心了。”
七
晚上,我和丛雨一起走出科技楼。
月亮很圆,挂在天上,把整条路照得发白。路边的银杏树已经开始黄了,有几片叶子落在地上,被风吹着滚动。
“周远舟这个人,你觉得怎么样?”丛雨问。
“水平不错。”
“我不是问水平。”
“那你问什么?”
“问——你对他有没有什么感觉?”
“什么感觉?”
“就是——”丛雨斟酌了一下用词,“他来了之后,会不会影响你进前三?”
我想了想。
“不会。”
“你这么自信?”
“不是自信。是——我能控制的只有我自己。别人强不强,不影响我要不要努力。”
丛雨看着我,忽然笑了。
“你这个人,有时候说话还挺有道理的。”
“我什么时候说话没有道理?”
“你每次怼我的时候。”她说,“你那不叫道理,叫抬杠。”
“那是你的幻觉。”
“你看,又开始抬杠了。”
她笑着往前走,马尾辫在月光下一晃一晃的。
我跟在她身后,踩着她被月光拉长的影子。
“方铨铎。”
“嗯。”
“你说,沉鱼旋为什么总是不太高兴?”
“你怎么知道她不高兴?”
“她的眼睛。”丛雨说,“一个人高不高兴,看眼睛就知道了。”
我想起沉鱼旋今天在报名表前停下的那一下。
“也许她有什么难言之隐。”我说。
“什么难言之隐?”
“不知道。”
丛雨没有再问。
我们沉默着走了很长一段路。
风吹过来,把银杏叶吹得沙沙响。
“不管怎样,”丛雨说,“她都是我们的同伴。”
“嗯。”
“校内选拔赛,我们要一起加油。”
“嗯。”
“你嗯嗯嗯的,能不能说点别的?”
我想了想。
“Ciallo。”
丛雨愣了一下。
然后她笑了,笑得眼睛弯弯的,笑声在夜风里飘出去很远。
“Ciallo!”她回了很大一声,然后伸出右手在脸颊旁边画了一个圈。
月亮很圆。
她的笑容也很圆。
我转过头,看到科技楼四楼的灯还亮着。
活动室的窗户里透出白色的光。
那个窗口里,坐着鞍马流、常陆茉子、三司绫濑、周远舟。
还有沉鱼旋。
每个人都在这条路上。
为了同一个目标。
十一月中旬,校内选拔赛。
前三名。
我没有说出口的话是——
我想赢。
不是为了证明什么,不是为了向谁交代。
而是那个站在白板前写下自己名字的方铨铎,心里有一个声音在说——
你还可以更好。
窗外的银杏叶在月光下泛着金色的光。
秋天,真的来了。
-
八
一
NOIP前一天,沉鱼旋回到了活动室。
她带了一袋糖炒栗子,放在桌上,没说是给谁的。栗子的香味在密闭的活动室里散开,混着三司绫濑咖啡机里飘出来的焦苦味,还有常陆茉子保温杯里不知道什么茶的淡香。
丛雨第一个伸手拿了。
“好甜!”她咬了一口,眼睛亮了,“沉鱼旋你在哪里买的?”
“学校门口。”
“我怎么没看到?”
“那个推车的老大爷,下午四点以后才出来。”
丛雨又拿了一颗,剥得很认真。她剥栗子的方式很特别——先用指甲在壳上划一道口子,然后从口子两边往中间挤,壳裂开,完整的栗子肉就出来了。
“你技术不错。”我说。
“那当然。”她把剥好的栗子递给我,“给你。”
我接过来,放进嘴里。很甜,很糯。不是那种加了糖精的甜,是栗子本身的甜味,在舌尖上慢慢化开。
沉鱼旋在旁边看着我们,没有说话。她的面前放着那杯永远不变的白水,水还冒着热气。她的手指握着杯壁,指尖被烫得微微泛红,但她没有松手。
三司绫濑端着一杯奶茶走过来,看了看桌上的栗子,又看了看沉鱼旋。
“你回来了。”
“嗯。”
“没事吧?”
“没事。”
三司绫濑点了点头,没有多问。她拿起一颗栗子,试着剥了一下,壳碎了,栗子肉也碎了。
“这玩意怎么这么难剥。”
“我来吧。”常陆茉子从她手里接过栗子,用指甲划了一道口子。她的动作很慢,像是在写一段需要精心调试的代码——先分析结构,找到最薄弱的接口,然后精准地施加压力。壳从两边裂开,完整的栗子肉落在三司绫濑的手心里。
三司绫濑看着那颗完整的栗子,愣了一下。
“茉子你也会?”
“书上看的。”
“什么书上会教剥栗子?”
常陆茉子没有回答,低下头继续看书。但她翻页的速度比平时慢了一些——大概是在等三司绫濑把栗子吃完。
角落里的鞍马流忽然开口了。
“谁还有栗子?”
所有人都转过头看他。鞍马流很少主动要东西,他连水都很少喝,能在活动室里坐一整天不动弹。丛雨赶紧递了几颗过去。
鞍马流接过来,没有剥,直接放进了口袋里。
“留着回去吃。”他说。
然后他转过头,继续看屏幕。但他的耳朵红了——在日光灯的白光下,那一点红色很明显。
我从活动室的另一头看过去,心想:鞍马流大概不是真的想吃栗子。他只是不想在这个所有人都在说话、剥栗子、互相递东西的场景里,成为唯一一个没有被递到的人。
周远舟从门外冲进来,手里拿着一大袋东西。
“你们猜我买了什么!”
“什么?”
“糖炒栗子。”
活动室里安静了一秒。
“我们已经有了。”丛雨说。
“啊?”周远舟看了看桌上的那袋栗子,又看了看自己手里的,“你们在哪买的?”
“学校门口,推车的老大爷。”
“我也是在那买的啊!”周远舟一脸困惑,站在门口保持着推门的姿势,像一尊被按了暂停键的雕塑,“怎么你们都有栗子了?”
丛雨笑了。
“因为你来得太晚了,周远舟同学。”
“叫我小周就行,不用叫全名。”
“好的,周远舟同学。”
“……”
沉鱼旋看着这一幕,嘴角微微动了一下。不是笑。但比笑更真实。就像一棵很久没浇水的植物,忽然得到了几滴雨水——不至于立刻活过来,但叶子不再往下垂了。
二
NOIP当天。
考场设在隔壁学校,走路十五分钟。十一学校租了两辆大巴,把我们送到考场门口。
十二月的北京很冷,早上的气温在零下五度左右。我穿着校服外套,里面还加了一件毛衣,但还是觉得冷风从领口往里灌——不是衣服不够厚,是北京的冬天有一种往里钻的冷,不管穿多少都挡不住。
丛雨站在我旁边,缩着脖子,双手插在口袋里。
“好冷——”
“你不是北京人吗?还怕冷?”
“北京人怎么了?北京人也是人啊。”她把脸埋进校服领子里,只露出一双眼睛。那双眼睛在晨光里亮晶晶的,睫毛上凝了一层薄薄的白霜。
“紧张吗?”我问。
“有一点。”她说,“但是——这次我电脑不会死机了。”
“你怎么知道?”
“因为我换了新电脑。”她从包里掏出一个崭新的笔记本电脑,在我面前晃了晃。银灰色的外壳在冬天的阳光下反射出一道冷光,“我妈给我买的。她说去年太亏了,今年不能再亏。”
我看了看那台电脑——配置不错,CPU是i7,内存16G,做NOIP的题绰绰有余。但我知道真正让她不怕的不是这台电脑的配置,而是那个愿意给她买电脑的人。
“你妈挺支持你的。”
“嗯。”她点了点头,声音忽然小了下去,“她说了,不管我考得怎么样,她都高兴。”
“那就别紧张了。”
“我不是紧张考试。我是紧张——”她顿了一下。
她咬了一下嘴唇。牙齿压在下唇上,压出一道浅浅的白印。
“我怕让她们失望。”
“谁?”
“我妈。还有——三司学姐。还有你。”
最后两个字说得很轻。轻到差点被风吹散。北京的冬天的风,干燥,锋利,能把最轻的声音削成碎片。但我听到了。
“你不会让我失望的。”我说。
“你怎么知道?”
“因为你连剥栗子都剥得比别人好。”
她愣了一下。
然后笑了。不是那种客气的、社交性的笑,而是从身体深处涌上来的、憋不住的笑。她笑得弯了腰,马尾辫从肩膀上滑下来,垂在脸旁边。
“这是什么鬼标准。”
风吹过来,银杏树上最后几片叶子落下来。它们在空中转了很久,像是在犹豫要不要离开那根已经抓了一整年的枝条。最终还是松开了,落在我们脚边,发出细微的、干燥的声音。
沉鱼旋从大巴上下来,走到我们旁边。
她今天穿了一件浅灰色的呢子大衣,里面是校服,围了一条深蓝色的围巾。围巾很大,把她下半张脸都遮住了,只露出鼻子和眼睛。她的眼睛在深蓝色的围巾上面显得格外黑,瞳孔里映着灰白色的天空。
“沉鱼旋,你今天很好看。”丛雨说。
沉鱼旋看了丛雨一眼。那一眼很短,但在那一瞬间,她的眼睛里闪过一种说不清的东西——不是被夸奖时的高兴,更像是一种“你为什么对我这么好”的困惑。
“谢谢。”
“你围巾在哪里买的?我也想买一条。”
“不记得了。”
“那你借我戴一下?”
沉鱼旋犹豫了一秒。她低头看了一眼自己的围巾,深蓝色的羊毛围巾,边角有些起球,是戴了很久的那种旧。然后她把围巾取下来,递给丛雨。动作很慢,像是在做一个重要的决定。
丛雨接过去,围在自己的脖子上。围巾太长了,在她脖子上绕了两圈还有多余的,垂下来的两端在她胸前晃来晃去。
“好暖和。”她眯起眼睛,像一只被撸舒服了的猫。她深深吸了一口气,“有你的味道。”
沉鱼旋没有接话。
然后丛雨看到沉鱼旋裸露的脖子,忽然意识到什么。没有了围巾的遮挡,沉鱼旋的脖颈在冬天的空气里显得格外纤细,喉结的位置被高领毛衣的领口遮住了,但脖颈的线条从领口一直延伸到下巴,像一道被风吹弯的线。
“你冷吗?围巾给我了你怎么办?”
“我不冷。”
“你骗人。你下巴都红了。”
沉鱼旋伸手摸了一下自己的下巴。她的手指很白,指甲涂着透明的甲油,在冬天的光线里几乎和皮肤融为一体。然后她把手指收回去,攥成拳头,放回大衣口袋里。
“走吧,要进场了。”
她转身往考场方向走。丛雨追上去,把围巾重新披在她肩上。
“一起戴。”
两个女生裹着同一条围巾,并肩走在冬天的晨光里。一个活泼,步幅大,踩在落叶上发出咔嚓咔嚓的声音。一个安静,步幅小,踩在同样的落叶上却没有声音。一个在笑,一个没有笑但看起来不那么冷了。
我跟在后面。看着那两条围巾的两端在她们身后飘着,像一面深蓝色的旗。
考场的大门开着,考生们陆陆续续往里走。几百个人的呼吸在零下五度的空气里变成几百团白雾,升起来,散开,混在一起。
我回头看了一眼大巴的方向。
鞍马流最后一个下车,低着头往这边走。他的表情和平时一样,看不出紧张,也看不出不紧张。但他的右手插在口袋里,攥着什么东西。
是昨天那颗栗子吗?
我不知道。
我只知道,对鞍马流来说,这是最后一次。最后一次以高中生的身份参加NOIP。他的口袋里装着那颗没有剥开的栗子,像是在身上藏了一个小小的护身符——不是为了保佑自己考好,而是提醒自己,考完之后还有地方要回去。
回到那个活动室。坐在那个角落。戴上耳机。敲键盘。
今年是最后一次。
但不是结束。
三
考场里很安静。
几百台电脑排列在巨大的房间里,屏幕都是黑的,像几百面暗着的镜子。考生们坐在各自的位置上,有人在深呼吸,有人在转笔,有人盯着黑掉的屏幕发呆,有人在脑子里过着最后的模板。
我的位置在靠窗的那一排。丛雨坐在我斜后方,她在调试键盘,每个键按一下,确认手感——这是一种只有竞赛生才懂的仪式。沉鱼旋在我左边,中间隔了一个空位,她正低着头,把围巾解开,叠好,放在桌角。
她的手指很稳。叠出来的围巾像一块刚出炉的豆腐,四角都是直角,边线笔直,没有一丝褶皱。
“方铨铎。”
“嗯?”
“你昨天说的话,我记住了。”
“哪句?”
“不管你是谁,不管你是怎样的——你现在是十一学校的学生,是信息学竞赛社团的成员。你在报名表上写过你的名字,你在活动室的座位上坐过。这些事情,是真的。”
她说完这句话,没有再开口。
8:25。
监考老师开始宣读考场纪律。声音很大,在空旷的考场里产生了回音,一个字一个字地弹回来,叠在一起,听不太清楚。但没有人真的在听——所有人的注意力都不在那上面。
8:30。
“考试开始。”
屏幕上跳出题目。
四道题。每道题一百分。总分四百。
我点开第一题。
读完题面的时候,我愣了一下。
不是因为它难——而是因为它看起来太简单了。模拟题,描述了一个图书管理系统的借阅流程,输入是一系列操作指令,输出是每次操作后的状态。数据范围不大,用数组就能过。
但NOIP的第一题从来不会“真正简单”。
我又读了一遍题面。
然后我看到了那个坑。
借书操作中,如果读者要借的书已经被借走了,系统不会报错,而是会将该书放入预约队列。当书归还时,优先分配给预约队列中排队的读者。不是简单的“已借出则操作无效”,而是一个需要维护队列的逻辑。
这不是简单的模拟。是模拟加数据结构。
我深吸一口气,开始写代码。
定义一个结构体存储每本书的状态——是否被借出,预约队列用一个queue<int>来存储读者的ID。主循环里读入每个操作,用switch-case分支处理不同的指令类型。
写到四十分钟的时候,我停下来,把整个逻辑在脑子里跑了一遍。
边界条件:预约队列为空时直接借出。书归还时预约队列非空则直接转借。读者ID重复预约同一本书需要去重。每一个边界条件都是一个潜在的WA点。
我加了一个visited数组来去重,又加了一个clear函数在书归还时清空预约标记。
编译。测试样例。
第一个样例过了。第二个样例过了。第三个——WA。
输出比预期少了三行。
我盯着屏幕,一行一行地检查代码。
问题出在归还操作上。当一本书被归还时,如果预约队列里有读者,我需要把书直接借给队列里的第一个人,同时输出一条“该书已转借给读者X”的消息。但我的代码在输出消息之后就结束了,没有继续判断该读者是否还在预约队列中。
不是逻辑错了,是输出格式错了。
NOIP的模拟题不考算法难度,考的是细心。每一个输出,每一行空格,每一条消息的措辞,都必须和题目要求完全一致。
我改完,重新测试。
所有样例通过。
提交。
绿色的Accepted跳出来的那一刻,我靠在椅背上,长出了一口气。第一题,用时五十七分钟,一百分。
四
第二题。
读完题面的时候,我知道这是一道贪心题。
题目描述了一个会议安排的问题——有n个会议,每个会议有开始时间和结束时间,会议室只有一个,要安排尽可能多的会议。经典的区间调度问题,解法是按结束时间排序,然后依次选择。
但数据范围n≤200000,不能用O(n2)的算法。需要用sort和贪心,时间复杂度O(n log n)。
我开始写。代码不长,核心部分只有二十行。写完之后,我停下来,多想了五秒钟。
如果两个会议的结束时间相同,应该选开始时间更晚的那个。这样才能给后面的会议留出更多空间。这不是题目明确给出的条件,而是贪心策略中必须考虑的细节。
我在比较函数里加了这个条件。
return a.end == b.end ? a.start > b.start : a.end < b.end;
测试样例。通过。
提交。
绿色。一百分。
用时三十五分钟。
五十五分钟加三十五分钟,不到一个半小时,两百分到手。
我活动了一下手指。机械键盘的红轴回弹很舒服,手指没有酸,脑子也还很清醒。
第三题。
动态规划。
题目描述了一个背包问题的变种——有n个物品,每个物品有重量和价值,背包容量为W,但物品之间有一些依赖关系:选了物品i才能选物品j。依赖关系构成了一棵树,没有环。
有依赖的背包问题。
我想了大概五分钟,在草稿纸上画了一棵树。根节点是虚拟节点0,连接所有没有父节点的物品。然后对树做一次DFS,在每一个节点上跑一个分组背包——对于当前节点的每一个子节点,可以选择“不选这个子节点”或者“选这个子节点及其子树”。子节点被选中的前提是父节点被选中。
状态定义:dp[u][j]表示在以u为根的子树中,用了j的容量,所能获得的最大价值。u必须被选中。
转移的时候,对于每个子节点v,枚举分配给v及其子树的容量k,然后更新dp[u][j] = max(dp[u][j], dp[u][j-k] + dp[v][k])。
时间复杂度O(n·W2),n≤1000,W≤500,10^9的计算量在C++的优化下勉强能过。
我写了一个小时十分钟。
写完之后发现了一个问题——我的DFS递归深度可能达到1000,在极端情况下会爆栈。虽然NOIP的评测环境栈空间通常够用,但我不能赌。
我把递归改成了手动模拟栈的非递归DFS。代码量多了三倍,调试了二十分钟。
提交。
黄色Pending。
四秒。
绿色。
Accepted。一百分。
我长出一口气。
还剩两道大题没做——不,还剩一道。第四题,一百二十分钟。第三题做完的时候,时间还剩两个小时整。
五
第四题。
读完题面的时候,我知道它为什么是最后一题了。
不是因为它超纲,而是因为它把好几个知识点揉在了一起——LCA,树上第k大,可持久化数据结构。每一个知识点单独拿出来都不算太难,但合在一起,就是一道满分一百的难题。
题面描述了一棵树,每个节点有一个权值。每次查询给出两个节点u、v和一个整数k,求从u到v的路径上,权值第k大的节点的权值。
路径上的第k大。
树上的路径可以用LCA分成两段——从u到lca,从lca到v。但这两段合在一起,需要在一个序列上找第k大。在序列上找第k大可以用主席树。在树上做路径查询,需要对每个节点建立一条从根到该节点的主席树版本,然后查询的时候合并u、v、lca、fa[lca]四个版本的信息。
主席树。
可持久化线段树。
这个知识点我学过,但在比赛中用过不超过三次。每一次用到的时候,都会出一些小问题——记错数组大小,忘记离散化,更新版本的时候指针指错。
这次不能错。
我从头开始写。
先读入权值,离散化。建图,DFS预处理深度和父节点。LCA的倍增表。然后DFS建主席树——每个节点基于父节点的版本,插入自己的权值。
写到这里的时候,我开始觉得不对劲。
内存。
n≤200000,权值范围1e9,需要离散化。主席树的节点数是n (log2(n) + 1),大约200000 18 = 3.6e6。每个节点存储左儿子、右儿子、计数值,三个int,大约12字节——
不,不对。指针在64位系统下是8字节。如果用指针,内存直接翻倍,3.6e6 * 24 ≈ 86MB,加上其他数组,会逼近甚至超过内存限制。
不能用指针。需要用数组下标模拟。
我停下来,重新设计数据结构。用三个数组——ls[]、rs[]、sum[],下标从1开始。定义一个newNode()函数,返回新节点的下标,同时把该节点的ls、rs初始化为0,sum初始化为0。
重写完了。比用指针的版本丑了很多,但我知道它能跑。
写完通过编译的时候,时间还剩四十分钟。
我测试了样例。第一个过了,第二个过了,第三个——输出结果比正确答案小了。
哪里算错了?
我打印出中间结果,一行一行地看。
LCA算对了。路径上的节点数算对了。离散化的映射关系也对了。
问题出在查询的逻辑上。
我用的查询方法是:同时访问u、v、lca、fa[lca]四个版本的主席树,计算左子树的节点总数 = sum[ls[u]] + sum[ls[v]] - sum[ls[lca]] - sum[ls[fa[lca]]]。如果k大于这个数,就查右子树,k减去左子树的个数;否则查左子树。
这个逻辑在标准的主席树查询中是对的。但我的离散化是从1到m从小到大排序的——第k大的定义是“从大到小排第k个”。我的查询方向反了。
我需要把查询逻辑反过来:先算右子树的节点数,如果k大于右子树的个数,就查左子树,否则查右子树。
改了六个字符。
重新编译。测试。
第三个样例过了。
提交。
四分钟。
三分钟。
两分钟。
一分钟。
绿色。
Accepted。
一百分。
我盯着那行绿色的字,手指放在键盘上,没有动。
四百六十八分。
满分四百,我拿了多少?第一题一百,第二题一百,第三题一百,第四题一百。
不对——第四题我算了一下,不是一百。第四题满分一百,但我中途WA了一次,第二次才AC。NOIP的评分规则是,每个测试点有分值,部分正确给部分分。我WA了一次之后重新提交,第二次的提交覆盖了第一次的成绩,最终得分是一百。
那就是满分。
四百分?
不——第一题一百,第二题一百,第三题一百,第四题一百。满分四百。我没做错任何一道题。
四百。
四百。
我靠在椅背上。
窗外的阳光从玻璃照进来,落在键盘上,把黑色的键帽照得发亮。十二月的阳光,角度很低,光线几乎是贴着桌面射进来的,把键盘的影子拉得很长很长。
我想起了什么。
省选那天。那道有向图的题。交卷前三分钟,我发现图是有向的,从头重写,没来得及检查。
三分钟。
今天。第四题。发现查询方向反了,改了六个字符。
六字符。
三分钟和六个字符。不是运气好不好的问题,是在最后关头能不能静下心来看清楚问题。
省选那天我没能静下来。今天——我静下来了。
就是这一点区别。三分钟和六个字符之间,隔着一整年的训练。隔着一千多道题。隔着无数个深夜在活动室里独自面对红色Wrong Answer的夜晚。
我把双手从键盘上拿开,放在膝盖上。
活动室里的键盘声还在继续。丛雨的手指没有停过,她还在写第三题。沉鱼旋的侧脸在屏幕光里显得格外安静,她也在写第四题,眉头微微皱着,但手指没有犹豫。
我把目光收回来,重新打开第四题的代码,从头看了一遍。
一千二百行。
每一行都是我写的。
每一行都通过了。
六
考试结束的铃声响了。
考场里响起一片键盘声——不是打字的声音,而是所有人同时从座位上站起来时,椅子腿摩擦地面的声音,像一把巨大的锯子在锯开时间。
丛雨第一个冲出来。
马尾辫在身后甩来甩去,校服裙摆被冬天的风吹得翻起来,她在门口张望了一下,看到我,直接跑了过来。跑到我面前的时候,她喘得上气不接下气,脸被冷风吹得通红。
“我这次电脑没有死机!”她说这话的时候整个人都在发光,不是修辞,是真的在发光。她的眼睛里有光,脸颊上有光,连呼出的白气在阳光里都在发光。
“考得怎么样?”我问。
“不知道。但我把题都做完了!”她攥着拳头,像一个刚刚跑完马拉松的人——不是赢了比赛,而是完成了比赛。那种满足感是完整的、不需要和任何人比较的。
“就算结果是零分,我也做完了。”
沉鱼旋从考场里走出来,围巾已经重新围上了。她围围巾的方式很特别——不是绕一圈然后打结,而是从后往前绕,把两端交叉在胸前,塞进大衣领子里。整条围巾没有露出一截线头,像它本来就和那件大衣长在一起。
“沉鱼旋,你怎么样?”丛雨问。
“还行。”
“还行是什么意思?”
“就是还行。”
丛雨撇了撇嘴,但没有追问。
周远舟从人群中挤出来,手里拿着一瓶水,咕咚咕咚喝了半瓶。水从瓶口溢出来,顺着他的下巴滴到校服上,他伸手抹了一把,完全不在意。
“第四题太难了!”他抹了抹嘴,眼睛瞪得很大,“我用的是树剖加线段树,不知道能不能过。”
“主席树。”我说。
“什么?”
“第四题应该用主席树。”
周远舟愣了一下。那一愣持续了大概两秒钟——第一秒是困惑,第二秒是恍然大悟。然后他用力拍了一下自己的额头,啪的一声,声音很大,旁边几个考生都转过头来看他。
“对!主席树!我怎么没想到!”
他懊恼地蹲下来,双手抱头,像一个犯了低级错误的程序员在gdb里发现了自己的bug。
“完了完了完了。”
“不一定。”常陆茉子的声音从旁边传来。她不知道什么时候已经走到了我们中间,手里拿着那本永远翻不完的《算法导论》,书签夹在新的一页。“树剖加线段树也能过,只要常数够小。”
周远舟抬起头,眼睛里燃起一丝希望。
“真的?”
“真的。”
他站起身来。蹲得太久了,腿有点麻,晃了一下才站稳。
“常陆学姐,你太好了!我要给你立长生牌位!”
“不用。”
常陆茉子低下头,翻了一页书。但我看到她的嘴角动了一下——非常轻微,像是某个东西试图突破她那张平静的脸,但最终没有成功。
鞍马流最后一个走出来。
他低着头,手插在口袋里。右手插在口袋里,攥着什么东西——栗子?也许是。也许不是。那东西在他口袋里鼓出一个小小的包。
没有人问他考得怎么样。
因为他的表情已经告诉了所有人答案。
他不满意。他的眉毛微微蹙着,嘴唇抿成一条线,走路的步子比平时慢了一些。但也没有不满意到要重来的程度——他在某个地方犯了错,但他知道那个错误在误差范围内,不足以摧毁整场考试的结果。
“走吧,回去了。”他说。
声音不大,带着一点沙哑。
三司绫濑站在大巴旁边,手里拿着签到表,按着圆珠笔的按钮,咔嗒咔嗒地响。她对着名单一个一个打勾,念到每一个名字的时候都会抬起头看一眼那个人,确认是本人在场。
“鞍马流——到了。常陆茉子——到了。方铨铎——到了。丛雨——到了。沉鱼旋——到了。周远舟——到了。”
她合上签到表。
“全员到齐。回家。”
大巴发动的时候,窗外开始飘雪。
很小很小的雪花,落在车窗上,马上就化了。北京的初雪总是这样的——不像东北的雪那样轰轰烈烈,更像是在试探,看看这个城市还记不记得怎么迎接它。
丛雨靠在我肩膀上,睡着了。她的呼吸很轻,鼻息扑在我的校服袖子上,暖的。马尾辫从肩膀滑下来,垂在我的手臂旁边,发梢微微卷着,粘在袖口的校徽上。
沉鱼旋坐在前面一排,围巾已经解下来了,搭在膝盖上。她正看着窗外的雪,窗玻璃上结了一层薄薄的水雾,她的倒影映在那层水雾里,模糊的,像一幅没干的水彩画。水滴从她的倒影上滑下来,往下流,流过车窗上凝结的雪花的痕迹。
常陆茉子在看书。书页翻动的声音很轻,在摇晃的大巴里几乎听不到。周远舟在背单词,耳朵里塞着耳机,嘴巴在默念,舌头在口腔里快速运动——念到难记的单词时他会皱眉头,念到简单的时候他会微微点头。
三司绫濑在喝奶茶。她左手拿着奶茶杯,右手拿着手机,在看什么东西。屏幕的光映在她的脸上,她的表情很平静,但嘴角有一点微微上扬。
鞍马流坐在最后一排,闭着眼睛。
耳机里没有声音——那副耳机是他的屏蔽罩,不是为了听音乐,而是为了告诉所有人“请勿打扰”。但他的呼吸频率暴露了他没有睡着。
大巴在雪中行驶,穿过北京的街道。
我从车窗往外看。
十一路公交车从旁边开过去,车身上贴着广告,广告上的明星被雪粒打成了虚影。路边的小店亮着暖黄色的灯,店主在门口扫雪,扫帚划过地面的声音被大巴的引擎盖住了,但你能想象出那个嚓嚓声。
十一学校。
校门口的石碑上刻着校名,雪花落在石碑的石面上,积了薄薄一层白。校门开着,门卫大爷站在岗亭里,手里端着一个搪瓷缸子,冒着热气。
大巴停下来。
车门打开,冷空气涌进来。
丛雨醒了。她揉了揉眼睛,从我的肩膀上抬起头来。她低头看了一眼我的校服袖子——上面有一小片被口水洇湿的痕迹。
“……对不起。”她的声音还带着睡意。
“没事。”
“你别盯着看!”
“我没看。”
“你在看!”
丛雨伸手捂住那片水渍,手掌盖在上面,手指微微蜷着。她的脸颊比刚才更红了——不是因为冷。
七
下车的时候,雪已经下得密了一些。不是绒毛般的小雪花了,变成了细碎的雪粒,打在脸上有一点疼。
丛雨双手插在口袋里,缩着脖子,走在前面。马尾辫被雪粒打湿了,变成一缕一缕的。
“方铨铎。”她忽然停下来,转过身。
“嗯?”
“你考得怎么样?”
“还行。”
“还行是什么意思?”
“就是还行。”
她瞪了我一眼。
“你们两个人都说还行,但你的还行和沉鱼旋的还行肯定不一样。”
我没有回答。
“你昨天说,‘你不会让我失望的’。”丛雨看着我的眼睛,“我现在问你——我让你失望了吗?”
风吹过来,雪粒打在脸上。
“没有。”我说。
“真的?”
“真的。”
她盯着我看了两秒钟。那双眼睛在雪光里显得格外亮,瞳孔里映着路灯昏黄的光。
然后她笑了。
“那就好。”
她转过身,继续往前走。步子轻快了很多,马尾辫在雪里甩来甩去,把雪粒甩到空中,在路灯的光晕里闪闪发亮。
我跟在她后面,踩着她踩过的雪。
雪地上脚印一串一串的,有的深,有的浅,有的被风吹平了,有的还保持着清晰的轮廓。她的脚印比我小很多,在我踩上去之前,已经被风填了一层薄薄的新雪。
走到路口的时候,沉鱼旋站在路灯下。
她没有撑伞,也没有戴帽子。雪落在她的头发上,落在她的肩膀上,落在她搭在膝盖上的围巾上。黑色的头发被雪粒点缀成白色,像老照片里的噪点。
她在等谁?
她没有说。
我走过她身边的时候,她开口了。
“方铨铎。”
“嗯。”
“四百六十八分。”
我停下脚步。
“你怎么知道?”
“看你的表情。”
我摸了摸自己的脸。
“我的表情怎么了?”
“好像在笑。”她说,“但你不知道自己笑了。”
她把围巾从膝盖上拿起来,重新围在脖子上。围巾的边角已经湿了,深蓝色变成了黑色,但她没有在意。
“走吧。”她说,“明天还要训练。”
她转过身,朝着宿舍的方向走去。她的脚步声在雪地上很轻,很均匀,不像丛雨那样把雪踩得咔嚓响,更像是在雪上滑行。
丛雨从后面追上来,拉住我的袖子。
“方铨铎。”
“嗯。”
“沉鱼旋刚才说你笑了。”
“嗯。”
“你真的笑了吗?”
“她说笑了就笑了。”
“那你现在笑一个给我看看。”
“不想笑。”
“你这个人真没意思。”
“嗯。”
“不过——”她低下头,用鞋尖在雪地上画了一个圈,圈里写了一个歪歪扭扭的“C”,“你今天考得很好,我替你高兴。”
雪还在下。
落在她写的那个C上,落在她低垂的睫毛上,落在我校服袖子上那片已经干了的水渍上。
我把手伸进口袋。
指尖碰到那个银色的U盘。冰凉的金属,被体温捂得微微变暖。
行到。
路还很长。
但今天,我走到了这里。
-
九
一
NOIP成绩出来那天,是十一月二十一日。
四百六十八分。全省第十四名。对我来说,这个数字意味着太多——它比过去的自己高出了好几个台阶,它证明了我没有选错路,它让我相信那道有向图的四十分、省选的第十七名,都已经是过去的事了。
但我没有来得及想太久。因为两天后,是我的生日。
十一月二十三日。
我自己差点忘了。是丛雨提醒我的。
“方铨铎,你生日是不是快到了?”NOIP成绩出来那天晚上,她在活动室里收拾书包的时候忽然问了一句,语气很随意,像是在问“你今天晚饭吃的什么”。
“你怎么知道的?”
“看你学籍信息的时候看到的。”
“你为什么要看我的学籍信息?”
“社团成员统计表上有啊。”她背好书包,把拉链拉上,抬起头看着我,嘴角带着一丝笑意,“我又不是故意看的。是它自己出现在我面前的。”
“学籍信息不会自己出现在你面前。”
“会的。它长脚了。”
丛雨说完这句话就跑了。马尾辫在门口甩了一下,消失在走廊尽头。
椅子还没推进去。她的水杯还放在桌上,杯盖没拧紧,冒着最后一丝热气。
我站在那里,看着那杯还在冒热气的水。她连水杯都忘了拿。
十一月二十三日上午,活动室的门锁着。三司绫濑在群里发了一条消息:「下午社团活动取消,改为晚上聚餐。地点:学校门口的小饭馆。时间:六点。所有人必须到。」
周远舟秒回了一个「收到」,然后是丛雨的「Ciallo~」,常陆茉子的句号,沉鱼旋的「好」。鞍马流没有回复,但他晚上一定会到——因为三司绫濑说了“所有人必须到”,鞍马流从不缺席任何一次被要求出席的活动。
下午五点半,天已经黑了。十二月的北京,白昼短得像一次性打火机的火苗,刚点着就灭了。我穿了一件深灰色的毛衣,外面套了校服,走到校门口的时候,远远看到小饭馆的玻璃窗上蒙着一层白雾——里面的热气遇冷凝结在玻璃内侧,把窗子变成了一块毛玻璃。
推开门的时候,热气裹着饭菜的香味扑面而来。
包间在最里面。三司绫濑已经把两张方桌拼成了一张长桌,桌上摆了七八个凉菜。她在分筷子,每双筷子对齐了再放下,间距相等,像在排列数组。
周远舟站在角落里调试投影仪——不知道他从哪里弄来一台投影仪,正在往白墙上打光。墙上出现一行歪歪扭扭的字:「祝方哥生日快乐!」
“方哥,你来了!”周远舟回头看到我,咧嘴笑了,“你看我这投影效果怎么样?清晰度还可以吧?”
“字歪了。”
“那是墙不平。”
“墙是平的。”
“那就是投影仪不平。”
丛雨从厨房门口探出头来。她今天穿了一件红色的毛衣,领口露出白色衬衫的边,头发没有扎马尾,而是编了一条侧辫,从左边肩膀垂下来,发尾用红色的发圈绑着。
“方铨铎!你坐那边!”她指了指长桌中间的位置,“那是你的专座。”
“为什么是专座?”
“因为那是我们专门给你留的位置。”
桌上摆了碗筷,碗里已经盛好了汤。鸡汤,上面飘着几颗枸杞,还在冒热气。枸杞在汤面上打转,一圈一圈的,像是被人用筷子搅过。
我坐下来。丛雨在我左边坐下,右边的位置还空着。
她在等谁?
二
开始上菜了。
酸菜鱼、糖醋排骨、干煸豆角、西红柿炒蛋、辣子鸡丁、清炒时蔬、玉米排骨汤、红烧肉、麻婆豆腐、蒜蓉西兰花。菜盘在桌上铺开来,桌面从白色变成了五颜六色。
“蛋糕呢?”周远舟问。
“最后上。”三司绫濑说。
“蛋糕是什么味的?”
“巧克力的。”
“你怎么知道方哥喜欢吃巧克力?”
“我不知道。”三司绫濑夹了一块红烧肉放进嘴里,嚼了两口,“我猜的。”
她猜对了。
丛雨给我夹了一块排骨。沉鱼旋给我倒了一杯水。常陆茉子把那盘辣子鸡丁推到我面前——她记得我喜欢吃辣。鞍马流什么都没做,但他坐到了我对面,这在平时是不可能的。他永远坐在角落里,今天,他坐在了我对面,正对着我。
周远舟举起杯子。
“来来来,我们一起敬方哥一杯!祝方哥生日快乐,NOIP考得好,省选也考得好,NOI也考得好,IOI也考得好!”
“IOI还早。”我说。
“那就先祝到IOI。”
杯子碰在一起,发出清脆的声音。丛雨的杯子撞过来的时候力气太大,水洒出来几滴,落在我手背上。她赶紧从口袋里掏出纸巾,抽了一张,按在我手背上,动作很快,手指的温度透过纸巾传过来。
“对不起对不起。”
“没事。”
“你的手好凉。”她说。
“你的手好热。”我说。
“……那是因为我刚端了热汤。”
她没有把手收回去。
三
菜吃到一半的时候,灯忽然灭了。
不是停电。是周远舟关了灯。
门被推开,黑暗中亮起一小片暖黄色的光。
丛雨端着一个蛋糕走进来,蛋糕上插着几根蜡烛,烛火在黑暗中微微晃动,映着她的脸。
她走得小心翼翼的,每一步都迈得很慢,双手端着盘子,目光盯着蜡烛的火苗,怕它被风吹灭。
“祝你生日快乐~祝你生日快乐~”她唱得很大声,走调了,但没有人纠正她。周远舟在三秒后加入了,声音比她更大,调跑得更远。三司绫濑没有唱出声音,但嘴唇在动。
常陆茉子没有唱,但她打起了拍子。食指和中指交替敲在桌面上,很轻,很规律。
沉鱼旋没有唱,也没有打拍子。
但她在看蛋糕。更准确地说,她在看蜡烛。
丛雨把蛋糕放在我面前。
“许愿!吹蜡烛!”
蛋糕是巧克力的,上面铺了一层薄薄的可可粉,中间用奶油写了四个字——「生日快乐」。字写得歪歪扭扭的,笔画粗细不均,最后一个“乐”字多了一横。
“这个字是谁写的?”我问。
“我写的。”丛雨说,“怎么了?”
“多了一横。”
“那是我的特色。你没有特色。”
蜡烛的火苗在空调的风里微微倾斜,拉成了一小片金色的光斑。
我闭上眼睛。
许什么愿呢?
我想起省选那天,手抖得敲不了键盘。想起暑假那个闷热的机房,只有我一个人。想起陈雨翔说“你是我见过最有天赋的人”。想起丛雨趴在桌上睡着,电脑屏幕还亮着红色的Wrong Answer。想起沉鱼旋在网吧的角落,校服外面套着灰色卫衣,屏幕光照在她苍白的脸上。
我想起活动室的白板墙上那些越来越密的思维导图,想起三司绫濑的咖啡机,想起常陆茉子的保温杯,想起鞍马流那颗没有剥开的栗子。
水穷处。
云起时。
我睁开眼睛,把蜡烛吹灭了。
四
灯光重新亮起来的时候,丛雨在切蛋糕。她切的方式和她剥栗子一样——先划一道口子,然后从两边往中间挤,蛋糕被完整地分成两半,切口整齐得像被std::sort处理过的数组。
“你的刀工不错。”我说。
“我学过。”
“在哪里学的?”
“B站。”
周远舟把投影仪关了,刚才一直在循环播放的幻灯片终于停下了。墙上的字慢慢暗下去,像水渍干涸的过程被倒放。
三司绫濑从包里拿出一个信封。
“这是社团给你的礼物。”她递给我,“不是买的,是每个人自己做的。”
信封是米白色的,没有封口。封面上用钢笔写了几个字——「To 方铨铎」。字迹清秀,是三司绫濑的手笔。
我打开,从里面抽出一叠纸。
第一张是丛雨的。
不是普通的信纸,是水彩纸。厚实,摸上去有纹理感。她在上面画了一幅画——一个穿着校服的男生坐在电脑前,屏幕上是绿色的Accepted。男生的背影画得很仔细,连校服上的褶皱都画出来了。
旁边站着一个扎双马尾的女生,手里举着一个写着“Ciallo”的牌子。
画的右下角用很小的字写着:“方铨铎,生日快乐!以后也一起写代码吧!”
第二张是三司绫濑的。
A4纸,打印的。标题是「方铨铎选手的优点分析」,下面列了八条:
代码风格整洁(错,是强迫症)
调试效率高(对,因为犯的错多)
动态规划思路清晰(比你同桌强)
图论基础扎实(不如鞍马流)
讲题能力强(社团第一,不同意可以辩论)
长得像吉祥物(已和丛雨达成共识)
奶茶口味品位极差(有待训练)
不承认自己优秀(最需要改的一条)
最后一行有一行手写的小字:“生日快乐。明年省选,我们一起进省队。”
第三张是常陆茉子的。
一张白纸,中间写了一行字,字很小,笔画很细:「沉舟侧畔千帆过,病树前头万木春。」
她没有解释为什么选这首诗。但我知道,她在对我说——过去的事已经过去了。
第四张是周远舟的。
一张黄色的便签纸,字很潦草:
「方哥!生日快乐!这次NOIP你考得太牛了!我决定以你为目标!超过你之前我不会放弃的!你一定要等着我!」
然后有一行用小字写在右下角:「叫我小周就行。」
第五张是鞍马流的。
一张便签纸上写着两个字:「别停。」
没有署名。没有标点。但我知道是他的字。这是他第一次给我写“别停”——之前他给我的只有“加油”。“加油”是说给出发的人听的,“别停”是说给已经在路上的人听的。
最后一张。
纸的质感和其他人都不一样。不是打印纸,不是便签纸,也不是水彩纸。是那种很薄的、微微泛黄的纸,像是从某个笔记本上撕下来的。边缘毛糙,不是用刀切的,是用手撕的,撕的时候还带走了一点笔记本的装订线。
字迹也很细。笔画很慢,每个字之间的距离比别人大,像是写字的人一直在犹豫要不要把这张纸送出去。
「方铨铎:
你还记得你在网吧找到我的那个晚上吗?
你可能不记得你说了什么。但我记得。
你说:不管你以前是怎样的,你现在是十一学校的学生,是信息学竞赛社团的成员。这些事情,是真的。
那天晚上我回到旅馆,把你说的这几句话写在了纸上,放在枕头下面。第二天早上醒来,第一件事是摸那张纸还在不在。它还在,我把它叠好,放进了口袋里。
NOIP的成绩出来了。你考了四百六十八分。全省第十四名。你比我高。
我为你高兴。不是因为你考得好我才高兴——是你考得好,你高兴,我也高兴。看到你高兴,我就高兴。
你说过一句话:行到水穷处,坐看云起时。我不知道水穷处在哪里,也不知道云起时是什么样子。但我知道,如果走到没有路的地方,我希望身边的人是你。
这份礼物不是买的。是我自己做的。可能不太好用,但我希望你收下。
沉鱼旋」
不是买的。
我翻了翻信封,里面还有一个东西。
是一个U盘。
金属外壳。银色的。上面刻着两个字。
「行到」
行到水穷处,坐看云起时。
U盘很轻,握在手心里几乎没有重量。但那个重量从掌心传到手腕,再从小臂传到肩膀,最后落在胸腔的某个位置。很轻。但挪不开。
我把U盘握在手里,金属的温度从掌心传进来,凉丝丝的,像是冬天第一次触到雪。
五
包间里忽然安静了。
不是没有人说话——周远舟还在和三司绫濑讨论某道题的最优解,丛雨在跟常陆茉子学怎么用指甲划开蛋糕盒上的胶带。但那种安静不是声音层面的,是一种气场上的、氛围上的东西。像你走进一间屋子,所有人都背对着你,但你知道他们都在等你开口。
沉鱼旋坐在长桌的另一头。
她今天穿了一件白色的毛衣,领口很高,遮住了脖子。头发散着,发尾垂到腰际,在白色的毛衣上衬得格外黑。
她面前的盘子是空的,筷子没有动过。
她握着那个空了的纸杯,手指在杯壁上轻轻摩挲。
“沉鱼旋。”我说。
她抬起头。
那双深棕色的眼睛在包间的灯光里显得很亮。不是那种“眼睛里有光”的亮,是真的光线反射在湿润的眼球表面,那种湿润不是眼泪,是什么别的——喉咙里咽下去的东西,往往先到眼睛。
“谢谢。”我说,“U盘我收了。”
她点了点头。没有说话。
但她握着纸杯的手指收紧了一点。纸杯被捏得变了形,杯口从圆形变成了椭圆,剩余几滴水的杯底发出轻微的咕噜声。
她把纸杯放下,拿起筷子,夹了一块排骨。
排骨掉在桌上。
她又夹了一块。
第二块也掉了。
第三块夹起来的时候,她的手指在抖。
她没有再夹第四块。
三司绫濑忽然站起来。
“那个——谁还要奶茶?我去买。”她的声音不大,但包间里每个人都听到了。没有人回答。“没人要?那我随便买了。”她拿起外套,推门出去了。门没有关严,冷风从门缝里灌进来,但没有人去关门。
常陆茉子低下头,翻开那本随身携带的《算法导论》。她翻开的地方不是书签夹的位置,而是随手翻开的一页——那页上写着关于红黑树的内容,左右旋、颜色翻转、插入修正。她的眼睛盯着书页,但很久没有翻过了。
周远舟忽然开始讲一个笑话。
“你们知道为什么程序员分不清万圣节和圣诞节吗?因为 Oct 31 和 Dec 25 是一样的!”
没有人笑。
“Oct 31 是八进制的31,换算成十进制是25。Dec 25 是十进制的25。所以 Oct 31 等于 Dec 25——”
“我们听懂了。”丛雨说。
“那你们怎么不笑?”
“不好笑。”
周远舟安静了。
鞍马流站起来,走到沉鱼旋旁边,把一颗栗子放在她面前。
不是剥好的栗子。是那颗他放在口袋里很多天的、从活动室带出来的、没有剥开的栗子。
他没有说话。放下栗子,回到自己的座位上。
栗子很小,深褐色的外壳上有一个小小的虫眼。
六
我站起来。
走到沉鱼旋面前。
她低着头,刘海遮住了大半张脸。露出来的那一小片脸颊在灯光下显得很白,很薄,像是冬天河面上最后一片冰。
“沉鱼旋。”我说。
她没有抬头。
“谢谢你。”
她还是没抬头。
“这个U盘——”我把U盘从口袋里拿出来,放在手心里,伸到她面前,“上面刻的字,我看懂了。行到水穷处,坐看云起时。”
她的睫毛动了一下。像是蝴蝶扇了一下翅膀。
“水穷处,我已经走过了。”我说,“云起时,大概就是现在。”
她抬起头。
那双眼睛里有泪光。不是流出来的那种,是蓄在眼眶里的那种。薄薄的一层,被灯光折射成七彩的颜色。
她没有说话。
我也没有说话。
旁边有人站了起来——椅子腿摩擦地面的声音。然后是另一个人的声音。然后是门打开的声音。
我没有回头看。
沉鱼旋伸出手,把那个U盘从我的手心里拿走了。
“我先帮你保管。”她说,声音很小,带着一点鼻音,“明天还给你。”
“……那不是送我的吗?”
“是送你的。但我先帮你保管。”
她的嘴角动了一下。不是笑,是那种“我有我的理由但我不想解释”的表情。
她从口袋里掏出一条红绳,穿过U盘尾部的小孔,打了一个结。然后她把红绳的两端系在一起,做成了一个挂绳。
她把挂绳挂在脖子上。
U盘垂在她毛衣的领口下面,银色的金属在白色的毛衣上发出暗淡的光。
“这样就不会丢了。”她说。
她的眼泪始终没有掉下来。
七
三司绫濑买了奶茶回来。
每人一杯,不管要不要。沉鱼旋那杯是热的珍珠奶茶,三分糖。她不喜欢太甜的,但三司绫濑说“过生日就要喝甜的”。
沉鱼旋喝了一口。
“太甜了。”她说。
但她没有放下杯子。双手捧着,像是在暖手。
丛雨把最后一块蛋糕推到我面前。
“你还没吃蛋糕呢。寿星不吃蛋糕算什么过生日。”
蛋糕已经凉了,巧克力外壳变硬了,奶油也有些凝固。我叉了一块放进嘴里。
很甜。比沉鱼旋那杯奶茶还甜。
“好吃吗?”丛雨问。
“嗯。”
“那你就多吃点。”她把盘子里剩下的蛋糕全部推到我面前,“这些都是你的。”
“吃不完。”
“吃不完可以打包。”
“打包带回去给谁吃?”
“给你自己当夜宵。”
她从口袋里掏出一张新的纸巾,把蛋糕盒叠成一个方方正正的纸盒,用胶带封好。她的手指在纸盒的四个角上按了按,让盒子的每个面都平整笔直。
“这样就不会漏了。”她说。
她的手指很灵巧。
丛雨收好蛋糕盒,抬起头看着我。
“方铨铎。”
“嗯?”
“你收到的最喜欢的礼物是什么?”
她问这个问题的时候,眼睛看着我。
但我知道她不是真的在问。
因为她在问之前,已经看到了沉鱼旋脖子上的那个U盘。
“我还没想好。”我说。
“骗人。”她说,“你已经想好了。”
她笑了。笑得很快,收得也很快。那笑像是在脸上贴了一张“我没事”的便利贴,风一吹就能掉。
八
聚餐结束的时候,已经快九点了。
大家站在饭馆门口等三司绫濑结账。周远舟在路灯下蹦来蹦去取暖,常陆茉子站在台阶上看书——路灯的光不够亮,她几乎把书贴到了鼻尖上。丛雨蹲在路边系鞋带,系得很慢,解开了重系,再解开再重系。明明已经系好了,她又拆开,又重新系。鞋带被她反复折来折去,从鲜红色变成了暗红色,像一条被玩旧的缎带。
沉鱼旋站在最边上。
路灯的光落在她身上,把她白色的毛衣染成了淡黄色。她低头看着脖子上的U盘,用手指轻轻碰了一下。金属很凉,她能感觉到。
“沉鱼旋。”我叫她。
她抬起头。
“明天记得还给我。”
“我什么时候还,看我心情。”
“那是什么时候?”
“看心情的意思就是——不知道。”
风吹过来,她脖子上的红绳被吹起来。U盘在绳子上轻轻晃动,撞在她毛衣的领口上,发出一声很轻的、几乎听不到的声响。
丛雨站起来,走到我身边。
“方铨铎。”
“嗯?”
“你该回家了。”
“嗯。”
“路上小心。”
“好。”
她转身走了。没有说Ciallo。
走了几步之后,她忽然停下来。
“方铨铎。”
“嗯?”
“生日快乐。”
她站在那里,背对着路灯,脸藏在阴影里。但她的声音很亮,亮得像是冬天早上第一道照进活动室的阳光。
“谢谢。”我说。
她转过身,走了。马尾辫在路灯下一甩一甩的,红色的发圈在暗色的背景里很显眼,像一团在夜色里跳跃的火。
沉鱼旋从边上走过来,站在我旁边。
“她走了。”沉鱼旋说。
“嗯。”
“你不追上去?”
“追上去做什么?”
沉鱼旋看了我一眼。
“算了。”她说,“你这个人是真的不懂。”
她拉了一下围巾,把下半张脸遮住,转身往宿舍的方向走去。走了几步,又停下来,回过头。
“方铨铎。”
“嗯?”
“那个U盘里的东西,你回去再看。”
“什么东西?”
“你自己看。”
她走了。
她的背影在路灯下越来越远,越来越小。白色的毛衣在暗色的背景里慢慢地变淡,最后消失在校门口的阴影里。
我站在路灯下。
风从北边吹过来,冬天的风,干燥,锋利,带着远处某个地方烧煤炉的味道。
我拿出手机。
陈雨翔的对话框里有一条新消息,是三分钟前发的。
「听丛雨说你今天过生日?生日快乐。顺便问一句——丛雨是谁?」
我没有回复。
我把手机放回口袋,把手插进外套里。手指碰到口袋角落里的什么东西——一张糖纸,不知道什么时候放进去的。彩色的,折叠成了一个小星星,很规整,每一条折痕都很用力,像是有人花了很长时间做的。
谁放的?
不知道。
我把那颗糖纸星星放回口袋,拉上拉链。
路灯把校门口的银杏树照成两棵——一棵真的,一棵影子。影子比真的更长,更瘦,更暗。
风吹过来,树上最后几片叶子落下来。落得很慢,像是在计算地面的坐标,又像是在犹豫要不要落在一个不该落的地方。
-
十
一
NOIP结束后的日子,像是被人按下了慢放键。
没有了每天倒计时的紧迫感,没有了凌晨还在调试的疲惫,活动室里的键盘声稀疏了很多。三司绫濑说这是“恢复期”,不能一直绷着,不然省选之前就断了。
丛雨把这理解为“可以多睡一会儿”。她之前每天七点到活动室,现在变成了七点十分。十分钟的差距不大,但她每次推门进来的时候都会说一句“今天又起晚了”,像是某种固定的仪式。
沉鱼旋的时间没有变。她永远在七点之前到,永远坐在那个靠窗的位置,面前放着那杯白水。她的位置和我的位置之间隔着一条过道——七十厘米。我量过。不是专门量的,是有一天用卷尺帮常陆茉子量书桌尺寸的时候顺便量的。
七十厘米。
走过去要两步。伸手够不到。
十一月最后一周的周二,三司绫濑在活动室的白板上贴了一张新的时间表。从十二月开始恢复模拟赛,每周两场,周三和周六,难度对标省选。白板擦得很干净,边缘没有一丝残留的墨迹,她用尺子比着画的线,横平竖直,像印刷出来的。
“省选在明年四月。”她用马克笔在四月上画了一个圈,“还有五个月。这五个月怎么过,决定了你们是去省选还是去看省选。”
周远舟举了一下手。
“说。”
“我能问个问题吗?”
“问。”
“为什么你每次说这种话的时候都像个班主任?”
三司绫濑把手里的马克笔扔了过去。周远舟接住了,放在桌上,笑了。
常陆茉子在她那本永远翻不完的《算法导论》里夹了一张新的书签。书签上印着一行字——“It’s not a bug, it’s a feature.”她把书签夹在第368页——动态规划的那一章。她的保温杯里换了新茶,是茉莉花茶,茶汤是淡黄色的,热气从杯口升起来,在她面前飘成一根很细的白线。
鞍马流换了新耳机。旧的用了两年,耳罩的皮都裂了,他拿黑色胶带缠了好几圈,缠得很仔细,胶带的边缘平整地贴合着耳罩的弧度,像在做精细的修复工作。新耳机的型号和旧的一样,黑色的,没有任何多余的装饰。
丛雨坐在我旁边。不是第一天坐在我旁边,是每天都坐在我旁边。一开始她会问“这个位置有人吗”,后来她不问了,直接把书包放在我旁边的椅子上。椅子是黑色的转椅,靠背的网面被坐得有些松,她每次坐上去之前会先转一圈——不是必要的动作,但她每次都转。
“你怎么每天都转椅子?”我问她。
“不转不舒服。”
“那你以前在二年三班也转?”
“二年三班的椅子是固定的,转不了。”
“那你怎么办?”
“抖腿。”
我想象了一下丛雨在教室里抖腿的样子。她大概自己也知道这个画面不太优雅,所以说完之后就笑了,笑得眼睛眯成一条缝,露出两颗虎牙。不是真的虎牙,只是犬齿比别人尖一点,笑起来的时候会露出来,白色的,很小。
“你别笑。”她说。
“我没笑。”
“你在笑。”
“我没有。”
“你的嘴角在往上翘。”
“那是肌肉痉挛。”
丛雨看着我,愣了一秒,然后笑得更厉害了。她趴在桌上,把脸埋在胳膊里,肩膀一抖一抖的。马尾辫从肩膀上滑下来,垂在桌面上,发梢卷着,像一条睡着了的蛇。
我继续看书。但我翻了三页都没有翻过去。
二
十二月第一周周三,恢复模拟赛。
题目是刘彦博老师出的,难度比NOIP高了一个档次。第一题是数据结构,第二题是数论,第三题是计算几何,第四题是字符串。我花了三个小时做完了前三题,第四题只写了一个暴力,拿了三十分。
总分三百三十分。
周远舟考完之后在群里发了一条语音,声音很大,隔着屏幕都能感觉到他的懊恼:“第四题那个后缀自动机是什么鬼啊!我连题面都没看懂!”
三司绫濑回了一个字:“学。”
丛雨考了二百一十分,比NOIP之前的模拟赛多了四十分。她看到成绩的时候没有笑,而是盯着屏幕看了很久。然后她转过头看着我。
“方铨铎。”
“嗯?”
“我是不是进步了?”
“是。”
“你说的是真的还是安慰我的?”
“真的。”
“你怎么证明你说的是真的?”
“你NOIP之前做树形DP需要两个小时,现在需要一个小时。你的代码里多余的变量从七个减少到了三个。你的缩进不再混用空格和Tab了。”
丛雨张了张嘴,然后闭上了。
“……你连我用了几个变量都记得?”
“不记得。但你的代码我看过,我记得你之前写得很乱。”
“那你就是说我之前写得很乱。”
“对。”
丛雨拿起桌上的草稿纸卷成一个筒,朝我头上敲了一下。力气不大,纸筒打在头发上发出很轻的噗的一声。然后她把纸筒拆开,展平,重新叠成了一个正方形。她的手指很灵巧,叠出来的纸方正得像用尺子量过。她把那个正方形放在我的键盘旁边,上面用铅笔写了两个字——“光顾”。不是“关照”,是“光顾”。她写错别字的时候总是很可爱。
我到现在都觉得“可爱”这个词不应该用在我对她的感受上,但我找不到别的词。
三
周四没有模拟赛,是自由训练。
活动室里的气氛比周三松弛了很多。周远舟在看后缀自动机的教程,嘴里念念有词,像在背课文。常陆茉子在看数论,书页翻得很慢,但每一页停留的时间很长。鞍马流在做题,键盘声不快不慢,像节拍器。
丛雨在做一道模拟题。
她做模拟题的时候有一个习惯——她会先画流程图。不是在心里画,是真的拿笔在纸上画。方框、菱形、箭头,每一个分支条件都画得清清楚楚。她的流程图比她的代码容易看懂,因为流程图里的每一个方框,到了代码里都会变成一个函数。
我看了她画的流程图。
“你这个分支条件画反了。”
“哪里?”
“这里。”我指了指纸上那个菱形框,“应该是先判断是否为空,再判断是否越界。你画反了。”
丛雨盯着那个菱形看了一会儿,然后用橡皮擦掉,重新画。橡皮屑落在桌面上,她用嘴吹了一下,吹到了我这边。我用手指把橡皮屑拨回去,她又吹过来,我又拨回去。来回三次之后,她瞪了我一眼。
“你能不能正经一点?”
“是你先吹的。”
“我吹的是橡皮屑,不是针对你。”
“橡皮屑落在我的桌上了。”
“你可以把它吹回去。”
“我吹了。”
“你吹的力气太小了。”
“我怕把你吹飞。”
丛雨愣了一下,然后笑了。她笑起来的时候眼睛会眯成一条缝,露出那两颗尖尖的犬齿,脸颊上会出现两个不明显的酒窝,左边的比右边深一点点。她今天没有扎马尾,而是编了一条辫子,从左边肩膀垂下来,发尾用蓝色的发圈绑着。辫子编得很紧,每一股头发都很均匀,像是费了不少功夫。
“你今天的辫子谁编的?”我问。
“我自己。”
“编了很久吧。”
“你怎么知道?”
“因为编得很整齐。”
她伸手摸了摸自己的辫子,脸上浮起一种很淡的笑。不是那种“被夸了所以高兴”的笑,而是那种“终于有人注意到了”的笑。那种笑比普通的笑更安静,持续的时间也更短——像露水,太阳一出来就消失了,但消失之前会在叶子上留下一个小小的光斑。
“方铨铎。”
“嗯?”
“你今天的头发翘起来了。”
“哪里?”
“这里。”她伸出手,用手指轻轻压了一下我脑袋右侧翘起来的那撮头发。动作很快,大概不到一秒。她的手指的温度透过头发传到头皮上,热的。不是“温暖”的那种热,是“超过体温”的那种热,像她的体温天生就比正常人高半度。
“好了。”她把手收回去,低头继续画流程图。
我转过头,重新看自己的屏幕。
屏幕上的代码一行一行的,黑色的背景,彩色的高亮。我盯着光标,光标在闪烁,一下,两下,三下。
我在想刚才那一秒。
四
周六的第二场模拟赛,我考了三百六十分。
第四题终于做出来了,不是正解,是优化过的暴力,卡着时限过的。评测结果出来的时候,常陆茉子在我身后站了一下。
“你第四题的常数还能再优化。”
“哪里?”
“这里。”她指了一下屏幕上的一行代码,“这个取模操作可以用if代替,取模比if慢三倍左右。”
我改了,重新提交,快了二百毫秒。
“谢谢。”我说。
常陆茉子点了点头,回到自己的座位上。她的保温杯放在桌上,杯盖开着,茉莉花茶的香气从杯口飘出来,淡淡的,很好闻。
丛雨凑过来,鼻子抽动了一下。
“好香。茉子学姐,你泡的什么茶?”
“茉莉花茶。”
“我也要喝。”
常陆茉子从抽屉里拿出一个纸杯,倒了一杯,推给丛雨。纸杯是白色的,上面印着十一学校的校徽。丛雨双手捧着纸杯,吹了吹,喝了一小口。
“好烫。”
“刚泡的。”
“我知道。我就是想喝。”
她又吹了吹,又喝了一小口。热气扑在她脸上,把她的睫毛打湿了,几根睫毛粘在一起,变成一小簇一小簇的。
“方铨铎,你要不要喝?”
“不用。”
“你喝一口嘛。”
“我不想喝。”
“就一口。”
她把纸杯举到我面前。杯口冒着热气,热气后面是她的眼睛,棕色的,瞳孔很大,眼尾微微上挑。她的手指握着杯壁,指甲修剪得很整齐,没有涂指甲油,指甲盖是淡淡的粉色。
我喝了一口。
很烫。茉莉花的香味很重,茶味很淡。
“好喝吗?”她问。
“太烫了。”
“那你等凉了再喝。”
她把纸杯放在我桌上,没有拿回去。纸杯在我键盘右边,鼠标垫的旁边。杯壁上留着她手指握过的痕迹——不是指纹,是温度。她手心温度比普通人高,留在纸杯上,像一块刚被握过的金属。
过了几分钟,茶凉了。我端起来喝了一口,茶味终于出来了,有一点苦。
丛雨不知道什么时候已经回过头去,继续看自己的屏幕了。她的辫子垂在肩膀前面,辫尾的发圈在空调的风里轻轻晃动。
蓝色的。她今天用了蓝色的发圈。
五
沉鱼旋这周的模拟赛考了三百四十分。
不算差,但比她NOIP的成绩低了一些。三司绫濑在群里发成绩的时候,她只回了一个句号。不是常陆茉子那种“已读”的句号,而是那种“我知道了但不想说话”的句号。两者在标点符号上没有区别,但在语境里有本质的不同。常陆茉子的句号是句号。沉鱼旋的句号是省略号。
周三晚上,活动室里只剩下我和她。
丛雨值日,周远舟去上数学竞赛的课了。三司绫濑和常陆茉子约了去图书馆还书。鞍马流今天没来——他在准备十二月底的北大冬令营申请材料,三司绫濑特批他休息三天。
沉鱼旋在做一个数据结构题。她的手指在键盘上移动,不快不慢,节奏均匀。屏幕的光映在她脸上,把她的侧脸照得很亮。她今天穿了一件黑色的高领毛衣,头发散着,发尾垂在腰际,在黑色的毛衣上几乎分不清哪里是头发哪里是衣服。
“沉鱼旋。”
“嗯。”
“你今天怎么了?”
“没怎么。”
“你少考了二十分。”
“我知道。”
“为什么?”
她停下敲键盘的手,但没有转过头来。
“累了。”
“累了就休息。”
“休息了也累。”
这句话说得没什么逻辑。但我大概能理解她的意思——有些累不是睡一觉就能好的。那种累是长在骨头里的,拔不出来,也消化不掉。它就在那里,你走路的时候它不疼,你坐下来的时候它不疼,但你知道它在。你一直都知道。
我从书包里拿出一袋东西,放在她桌上。
“这是什么?”
“糖炒栗子。学校门口那个大爷今天出摊了。”
沉鱼旋低头看着那袋栗子。塑料袋是透明的,栗子在灯光下泛着油亮的光。袋口系了一个结,死结,我系的时候就想着不要让它自己松开。
她拿起那袋栗子,把死结解开了。
她剥了一颗栗子。用她的方式——指甲在壳上划一道口子,从两边往中间挤,壳裂开,完整的栗子肉落在她手心里。
她放在桌上,没有吃。
又剥了一颗。又放在桌上。
第三颗。第四颗。第五颗。
她的手指很稳,每一颗栗子都是完整的,没有一颗碎的。栗子肉在桌上排成一排,像是被sort函数整理过一样,大小相近,颜色均匀。
“你怎么不吃?”我问。
“你剥给我。”
“我在问你问题。”
“我在回答你。你剥给我,我就吃。”
我把椅子往她那边挪了一点。七十厘米的距离变成了五十厘米。我伸手拿了一颗栗子,用指甲划了一道口子,从两边往中间挤——壳碎了。栗子肉裂成了三瓣。
沉鱼旋看了一眼。
“你技术不行。”
“我知道。”
我又拿了一颗。这次慢了一点,指甲划的口子深了一些,挤的力气小了一些。壳裂开,栗子肉是完整的,但表面多了一道指甲划出来的痕迹。
“可以了。”她说。
我把栗子肉递给她。她接过去,放进嘴里,嚼了几下,咽下去。
“好吃吗?”我问。
“甜的。”
她又拿了一颗栗子,自己剥了。她的方式比我快很多,几乎是本能动作。完整的栗子肉从壳里滑出来,滚进她的手心里。
她把手伸过来。
“张开手。”
我摊开手掌。
她把那颗栗子肉放在我的掌心里。温热的,带着她手心的温度。她剥栗子的手指比我的细很多,指甲涂着透明的甲油,在灯光下反射出微弱的光,像一片很薄很薄的玻璃纸。
“你吃。”她说。
我吃掉了。
甜的。
比我买的时候在路边试吃的那颗还要甜。
六
周五中午,食堂。
丛雨端着餐盘在我对面坐下。她今天打了红烧排骨、西红柿炒蛋、一碗米饭,还有一个苹果。她的餐盘总是摆得很整齐——主菜在左上角,配菜在右上角,米饭在中间,水果放在餐盘最下方的凹槽里。像是有人在她的脑子里写了一个函数,每次调用都输出同一种布局。
“方铨铎,你下午有空吗?”
“什么事?”
“陪我去趟超市。”
“买什么?”
“发圈。我的发圈丢了。”
“你昨天还戴着的。”
“对,昨天晚上洗头的时候取下来放在洗手台上,今天早上去找,不见了。”
“被别人拿走了?”
“不知道。可能就是被风吹到地上了,然后被扫地的阿姨扫走了。”
她抬起手,指了一下自己的马尾辫。今天的发圈是黑色的,很普通的黑色发圈,在她深棕色的头发上几乎看不出来。
“黑色的不是也能用吗?”
“黑色的不好看。”
“发圈的功能是绑头发,不是好看。”
“你这个人对审美一窍不通。”
“你说得对。”
丛雨瞪了我一眼,然后低下头吃饭。她吃排骨的方式是先啃掉骨头两端的肉,然后把骨头咬开,吸里面的骨髓。吃相不算优雅,但很认真,像是完成一项重要的工作。
“你吃排骨的方式很像在做手术。”我说。
“这叫物尽其用。”
“这叫不放过任何一个卡路里。”
“方铨铎你今天是不是专门来怼我的?”
“是你先说我审美不好的。”
“因为你的审美就是不好。”
“我审美哪里不好?”
“你觉得黑色的发圈和红色的发圈一样好看,这就是审美不好。”
她端起米饭碗,把最后几粒米扒进嘴里。腮帮子鼓鼓的,像一只储存食物的仓鼠——不是比喻,是真的像。她的脸颊本来就有一点婴儿肥,塞满米饭的时候会鼓起来,像两个小包子。
我递了一张纸巾给她。
她接过去,擦了擦嘴,然后把纸巾叠成一个小方块,放在餐盘旁边。她的手指在纸巾上按了按,把四个角对齐,折痕压平。那个小方块的边角比打印机打出来的还直。
七
下午四点半,我和丛雨去了学校门口的超市。
超市不大,东西不多,但发圈的种类比我想象的多。黑色、棕色、红色、蓝色、黄色、粉色、紫色,还有带亮片的、带蝴蝶结的、带小樱桃装饰的。丛雨站在货架前面,双手叉腰,像是在做一个重大的决策。
“你觉得哪个好?”
“我不知道。”
“你不能说不知道。”
“我真的不知道。”
“你选一个。你选哪个我就买哪个。”
我看了看货架上一整排五颜六色的发圈。蓝色太普通,红色太张扬,粉色不符合她的气质,紫色太暗。黄色很亮,和她马尾辫的颜色很搭,但黄色的发圈上面带着一个小樱桃装饰,樱桃是塑料的,看起来有点廉价。
“这个。”我指了指那个黄色的樱桃发圈。
丛雨拿起来看了看,把它举到头发旁边比了一下,歪着头想了想。
“行。就这个。”
她走到收银台,把发圈放在柜台上,从口袋里掏出钱包——一个浅蓝色的布艺钱包,上面印着一只猫。她打开钱包,里面只有一张二十块的纸币。她把二十块递过去,收银员找了零,她把零钱放回钱包,动作很慢,像是在确认每一枚硬币的正确位置。
她把发圈套在手腕上,走出超市门的时候举起来看了看。夕阳透过发圈上的塑料樱桃,在空气中投下一个很小的红色光斑。
“方铨铎。”
“嗯。”
“下次我戴这个发圈的时候,你要记得是你选的。”
“好。”
“你不许说不好看。”
“好。”
“你只会说好吗?”
“嗯。”
丛雨用套着发圈的那只手的食指戳了一下我的胳膊。力气不大,但她的指甲修剪得很整齐,有一个尖尖的角度,隔着校服都能感觉到那个小小的凸起。
“走吧,回去了。”
她走在前面,发圈在她手腕上晃来晃去,黄色的,在夕阳里几乎变成了橙色。塑料樱桃被光线打透,在风中摇动的时候,会在地上投下一串小小的、明灭不定的光斑。
我跟在后面,踩着她踩过的路。
北京十二月的黄昏很短。太阳从西边的楼顶沉下去,天空从橘红色变成深蓝色,只用了不到二十分钟。
校门口的银杏树光秃秃的,枝丫伸向天空,像一排被晒干的珊瑚。
丛雨在科技楼门口停下来,转身看着我。
“方铨铎。”
“嗯。”
“你明天来活动室吗?”
“来。”
“几点?”
“七点。”
“那我七点也来。”
她说完这句话,跑上了楼梯。脚步声在楼道里回响,越来越远。马尾辫上的黑色发圈在昏暗的楼道里几乎看不见,但她手腕上那个黄色的樱桃发圈,一直在晃。
我站在科技楼门口,看着楼道里的灯一层一层地亮起来。
一楼。二楼。三楼。四楼。
四楼亮了之后,没有再往上亮。
她到了。
八
周六早上,丛雨换了新的发圈。
不是手腕上那个。是扎在头发上的。
黄色的樱桃发圈绑在她马尾辫的根部,把深棕色的头发束成一个高马尾。塑料樱桃垂在发圈打结的地方,随着她头部的动作轻轻晃动着。
她走进活动室的时候,周远舟第一个注意到了。
“丛雨学姐,你今天发圈好可爱!”
“谢谢周远舟同学。”她笑了,笑得眼睛弯成两道月牙。
“叫我小周就行。”
“好的周远舟同学。”
她走到我旁边,坐下来。她没有说话,也没有看我。她打开电脑,登录OJ,打开前一天做到一半的那道题,开始继续写。
但我注意到,她的马尾辫比平时扎高了一厘米左右。
不是高到夸张的程度,但高了一点。发圈的黄色在她的黑发上非常显眼,像在一片深色的背景上忽然出现的一抹高亮度标记——算法竞赛里,这种标记通常用来提醒自己:这里很重要,不要忘记。
她的手指在键盘上跳动着,字母从指尖一个一个地蹦到屏幕上。
include <iostream>
include <vector>
using namespace std;
键盘声很快,很密,像雨打在铁皮屋顶上。
我没有看她。
我在看自己的屏幕。
但我打错的三个变量名、漏掉的两个分号、写反的一个大于号,都告诉我同一件事。
我的注意力不在屏幕上。
我把那行写反的大于号改过来,编译通过,测试样例通过。
提交。
绿色的Accepted。
我靠在椅背上,长出一口气。
丛雨在我旁边笑了一下。
不是看我屏幕笑的。是她自己的代码也通过了。
她检查了一遍,确认没有边界条件遗漏,然后转过头来,马尾辫甩过来,黄色的樱桃发圈在我视线里晃了一下。
“我也过了。”
“恭喜。”
“你说恭喜的语气好敷衍。”
“那我再说一遍。恭喜。”
“还是敷衍。”
“那我没办法了。”
她笑了笑,没有再说什么。
她从抽屉里拿出两颗糖——橘子味的硬糖。她上课的时候从教室里拿的,说是老师发的奖励,她没舍得吃。她剥开一颗,放进嘴里,然后又剥开另一颗。
“张嘴。”
我张开嘴。
她把那颗糖塞进我嘴里。指尖碰到我的嘴唇,只有零点几秒。
糖是橘子味的,酸酸甜甜的。果酸的味道先冲到舌尖上,然后是甜味,从舌根慢慢蔓延到整个口腔。
“好吃吗?”她问。
“酸。”
“刚开始是酸的,后面就甜了。”
她没有说错。
这颗糖我现在还在吃。