CD49OI轮回录:请输入文本
第一章:四十九中众生相
CD49中学的校门,是仿着清华园造的,只是缩了三成,又因年久失修,那“厚德载物”的匾额已有了裂纹,像被什么无形的手掐过似的。门内两株银杏,一株是公的,另一株也是公的——这是生物老师考证过的,因此从不开花结果,只一味地绿了黄,黄了落,年复一年地做着无用功。
我重生到这世上的第十三天,便站在这两棵树下,手里攥着初一(13)班的录取通知书。通知书上印着校训:“代码即真理,AC即正义。”右下角盖着校长jzk的私章,那章子大约用了许久,边缘已有些模糊了。
上一世,我是IOI场上唯一全项目AK的传奇,领奖时聚光灯太烈,刺得我流了泪。这一世,魂魄却落在这具十二岁的躯壳里,名字仍是【请输入文本】——这倒省了改口。
“喂,新来的?”
我抬头。说话的是个瘦高男生,校服拉链只拉到一半,露出里头印着“Hello World”的T恤。他胸牌上写着:lxy,初一(12)班。
“你是集训队的?”lxy上下打量我,“不对啊,初一能进队的,除了我,就只有……”
“只有谁?”
“只有五班那几个怪物。”lxy撇嘴,“qnx、xyy、zzy,还有那个装深沉的spc。他们班主任是jzk从机构挖来的,专教信奥。”
正说着,教学楼里涌出一群人。为首的是个戴圆框眼镜的女生,个子小小,怀里却抱着本比砖头还厚的《算法导论》。她的胸牌晃了晃:qnx,初一(5)班。
“lxy,你又在这儿忽悠新生?”qnx声音清脆,“这位同学,你是几班的?”
“13班。”我说。
周围忽然安静了。连lxy都露出微妙的表情。
“13班啊……”qnx推了推眼镜,“那你们班主任是……?”
“wlzm老师。”
人群中传来低低的议论声。有个平头男生——wyz,12班——嗤笑一声:“13班也出OI选手?你们班上次月考数学平均分才72,连递归和循环都分不清吧?”
这话刻薄,却引来几声附和。我这才明白,在CD49中学,班级序号暗藏玄机:5班是“竞赛精英班”,12班是“重点实验班”,13班则是“普通平行班”——用学生间的话说,是“放羊班”。
“wyz,你少说两句。”另一个女生开口。她扎着马尾,眉眼干净,胸牌上写着psy,12班。“大家都是同学。”
“同学?”wyz冷笑,“等下周集训队选拔,就知道是不是‘同学’了。”
人群散去。lxy拍拍我的肩:“别理他们。不过……你真要参加选拔?”
“嗯。”
“有志气。”lxy咧嘴笑,“但你知道选拔考什么吗?”
我摇头。
“三道题。”lxy伸出三根手指,“第一题,考基本语法,能进一机房;第二题,考数据结构,能进二机房;第三题……”他压低声音,“考创新思维,能进创新中心——那是只有三位教练和少数怪物才能去的地方。”
“三位教练是?”
“zm,教基础;ysc,教高阶;还有外聘的jzk,专讲黑科技。”lxy眼里闪过憧憬,“我最大的梦想,就是让ysc老师看我一眼——哪怕一眼。”
我记住了这个名字:ysc。
傍晚,我去了传说中的“机房区”。那是操场后面的一排平房,墙上爬满爬山虎,绿得发黑。一机房和二机房挨着,窗明几净,能看见里头成排的电脑;创新中心却在最深处,门窗紧闭,拉着厚重的窗帘,像只蛰伏的兽。
透过一机房的窗户,我看见几十个学生在刷题。屏幕的光映在他们脸上,明明灭灭,像某种古老的祭祀仪式。有个男生突然捶桌:“又WA了!这数据有毒!”——那是zzj,5班,以暴躁闻名。
二机房人少些,也更安静。一个女生正对着白板演算,手指在空中划出虚拟的线段树——xyy,5班,据说六岁就会写快排。
“看够了?”
身后忽然响起声音。我转身,是个穿白大褂的男人,约莫三十出头,头发乱如鸟巢,手里端着杯枸杞茶。胸牌:jzk,特聘讲师。
“j老师。”我点头。
“新面孔。”jzk眯眼打量我,“13班的?来看机房?”
“来报名集训队选拔。”
jzk的枸杞茶洒了几滴:“你?13班的?”
“不行吗?”
“倒不是不行……”jzk笑了,那笑里带着玩味,“只是历年来,13班参加选拔的,最好成绩是……嗯,第一题拿了30分。”
“今年会不同。”我说。
jzk盯着我看了许久,忽然从白大褂口袋里掏出一张皱巴巴的纸:“喏,拿去。”
纸上是一道题:
给定一个长度为n的数组a,定义f(l,r)为区间[l,r]内所有数的异或和。求∑∑ f(l,r)对1e9+7取模,其中1≤l≤r≤n。n≤1e6。
“这是选拔第三题的难度。”jzk说,“给你十分钟,口述思路。”
我扫了一眼:“前缀异或和。令s[i]=a[1]^a[2]^…^a[i],则f(l,r)=s[r]^s[l-1]。问题转化为求∑∑ (s[r]^s[l-1])。对于每一位单独考虑,统计有多少对(l,r)在这一位上为1。时间复杂度O(n log max_a)。”
jzk手里的枸杞茶杯,彻底掉在了地上。
“你……”他声音发颤,“你从哪儿学的?”
“梦里。”我熟练地用上这个借口。
jzk弯腰捡杯子,手抖得厉害。他再抬头时,眼里有了不一样的东西:“明天放学,来创新中心找我。不要让其他人看见。”
“为什么?”
“因为,”他凑近,压低声音,“你刚才说的解法,是我昨天才在学术期刊上发表的——还没公开。”
夜风骤起,吹得银杏叶沙沙作响。我望着jzk匆匆离去的背影,心里那潭死水,终于起了涟漪。
这一世,好像不只是重考OI那么简单。
第二章:机房里的三国杀
CD49中学的集训队选拔,历来是九月最热闹的戏码。考场设在体育馆——临时搬来两百台电脑,电源线像蛇群般蜿蜒在地,稍不留神就会绊个跟头。
我按准考证找到座位:第114号,在最后一排角落。这位置偏僻,却能纵观全场。
左边坐着个胖乎乎的男生,正双手合十念念有词:“佛祖保佑,让我AC一道题……”胸牌:xrf,15班。见我坐下,他转头露出苦笑:“兄弟,你也来当分母?”
“也许能当分子呢。”我说。
xrf摇头:“难啊。你看前面——”他指向前排,“5班那帮怪物,qnx带了自备键盘,xyy带了速溶咖啡,zzy更夸张,带了本《具体数学》当护身符。这哪是考试,这是华山论剑。”
正说着,监考老师入场。为首的竟是ysc。
她今天穿了件深灰色针织衫,头发松松绾在脑后,露出白皙的脖颈。手里捧着一摞密封袋,脚步很轻,像猫。全场瞬间安静。
“考试规则我只说一遍。”ysc开口,声音不大,却清晰得能听见回声,“三小时,三道题。禁止交流,禁止查阅资料。系统会自动检测抄袭——如有雷同,两人同时零分。”
她顿了顿,目光扫过全场:“另外,今年新增一条:最终排名前三的,可以直接进创新中心,接受特训。”
哗——
体育馆炸了锅。创新中心!那是多少OIer的梦想!
“安静。”ysc敲敲话筒,“现在发题。”
题目出现在屏幕上:
T1:数字游戏(签到题)
T2:连通块计数(中等)
T3:密码破译(地狱难度)
我倒吸一口冷气——不是因为这题多难,而是因为,这三道题,和我上一世参加CD49选拔时,一模一样。
历史在重演。不,是在循环。
我看向ysc。她正低头整理试卷,侧脸在荧光灯下显得过分苍白。如果我没记错,上一世这场考试结束后,会发生一件事——一件让ysc从此戴上冷漠面具的事。
记忆翻涌而来:那是考试结束前十分钟,有个学生突然举报,说5班的zzy作弊。监考老师从zzy的笔袋里搜出一张写满代码的纸条。zzy百口莫辩,被取消了成绩。而举报他的人,是……是谁来着?
我头痛欲裂。重生后的记忆像被打碎的镜子,有些片段清晰如昨,有些却模糊不清。
“同学,你没事吧?”xrf小声问。
“没事。”我甩甩头,开始读题。
T1是简单的模拟题,五分钟AC。T2需要并查集加一些技巧,我用了二十分钟。T3……嗯,是RSA加密的变种,需要分解大整数。n的范围是1e12,用Pollard-Rho算法刚好。
我敲代码时,能感觉到有几道目光投来。qnx偶尔会回头瞥一眼,xyy则始终专注——她的屏幕已经跳到了T3。不愧是5班的王牌。
时间过去两小时。排行榜上,我、qnx、xyy并列第一,都是300分(满分)。第四名是12班的psy,270分。第五名是……lxy?他居然挤进了前五。
就在这时,异变突生。
“老师!”一个尖利的声音响起。
是yxz,5班。他举着手,脸涨得通红:“我举报!zzy作弊!他笔袋里有纸条!”
全场哗然。ysc快步走过去,从zzy的笔袋里抽出一张对折的纸。展开,上面密密麻麻写满了代码——正是T3的Pollard-Rho实现。
zzy脸色煞白:“这不是我的!我不知道……”
“人赃俱获,还有什么好说的?”yxz义正辞严,“老师,这种害群之马,应该立即取消资格!”
ysc盯着那张纸条,看了很久。然后她抬头,目光扫过体育馆的每个角落。
“这纸条,”她缓缓开口,“是有人陷害。”
“什么?”yxz愣住。
“你们看这里。”ysc指着纸条角落,“这有个咖啡渍——新鲜的。而zzy同学今天根本没带咖啡。”她转向xyy,“你带了咖啡,对吧?”
xyy点头。
“但这也不能证明什么……”yxz还在挣扎。
“还有。”ysc从口袋里掏出个紫外线手电,照在纸条上,“这上面有荧光标记——是考场专用的防伪码。只有监考老师才有。”
她顿了顿,声音冷得像冰:“有人偷了老师的备用纸条,提前抄好代码,塞进了zzy的笔袋。”
全场死寂。
我忽然想起来了。上一世,yxz举报成功,zzy被取消成绩。但一个月后,真相大白——是yxz自己作弊不成,反诬陷zzy。那时ysc已背了“失察”的处分,调离了集训队。
历史改变了。因为我提前告诉了jzk?不,我什么也没做……
“yxz同学,”ysc走到他面前,“你有什么要解释的?”
“我……我没有……”yxz瘫坐在椅子上。
“考试继续。”ysc收起纸条,“这件事,考完后处理。”
最后十分钟,我无心做题。目光落在排行榜上——zzy的名次在飞速上升。他咬着牙,手指在键盘上狂舞,像是要把所有委屈都敲进代码里。
最终成绩公布:
- 【请输入文本】,13班,300分
- qnx,5班,300分(罚时多)
- xyy,5班,300分(罚时更多)
- zzy,5班,290分
- psy,12班,280分
我、qnx、xyy,三人同分。按照规则,我们都获得了进入创新中心的资格。
散场时,zzy追上我。
“谢谢。”他眼睛红红的。
“谢我什么?”
“不知道。”zzy摇头,“但我感觉,刚才ysc老师能发现真相,和你有关。”
“错觉。”我拍拍他的肩,“是你自己实力够。”
走到体育馆门口,ysc叫住我。
“【请输入文本】。”她递给我一张门卡,“明天开始,放学后到创新中心报到。”
“老师,那张纸条……”
“我知道你想问什么。”ysc打断我,“有人想破坏选拔的公平。这不是第一次,也不会是最后一次。”
她看着远处渐渐暗下来的天:“CD49的OI圈,表面光鲜,底下却是个泥潭。5班和12班在争资源,老师在争业绩,就连学生之间……也充满了算计。”
“老师为什么告诉我这些?”
“因为你不一样。”ysc看着我,眼神复杂,“我在你身上,看到了某个人的影子。那个人……曾经也想改变这一切。”
“后来呢?”
“后来她失败了。”ysc转身离去,背影在暮色中拉得很长,“希望你不会。”
我握着那张冰冷的门卡,掌心渗出细汗。卡上印着一行小字:
创新中心·三级权限
持卡人:【请输入文本】
有效期:至本届IOI结束
夜风吹过,银杏叶簌簌落下,像一场金色的雨。我忽然想起上一世,某个前辈说过的话:
“CD49中学有两棵树,一棵是银杏,另一棵也是银杏。它们看着一代代OIer来了又走,拿了金牌,或折戟沉沙。树不会说话,但它们的年轮里,刻满了代码与梦想。”
这一世,我的代码,又会刻下什么呢?
第三章:创新中心的暗流
创新中心藏在实验楼最顶层,要过三道门禁。第一道刷校卡,第二道输密码,第三道——虹膜识别。我跟着ysc走进那扇厚重的金属门时,感觉像进了什么科幻电影的片场。
里面却是另一番天地。阳光从落地窗倾泻而入,照亮了满墙的白板。白板上写满了公式和伪代码,有些已经被擦得模糊,像褪色的碑文。房间中央是环形工作台,摆着六台顶配电脑,机箱泛着幽蓝的光。
已经有两人在了。qnx蜷在窗边的懒人沙发里,抱着一本《算法竞赛入门经典》;xyy则站在白板前,正对着一道题发呆。见到我们,两人同时抬头。
“欢迎来到地狱。”qnx面无表情地说。
“是天堂。”xyy纠正,“有免费空调和高速网络的天堂。”
ysc示意我坐下:“从今天起,你们三个就是创新中心的核心预备队。训练计划由我和jzk老师制定,zm老师负责基础辅导。”
她打开投影,幕布上出现一张复杂的甘特图:“未来八个月,你们的任务是:省选前十,国赛金牌,IOI选拔赛出线。有任何问题吗?”
“有。”qnx举手,“为什么有他?”她指着我。
“因为他是第一。”
“并列第一。”qnx强调,“而且他是13班的。”
“班级不重要。”ysc声音冷下来,“在这里,实力是唯一的通行证。如果你们不服,可以现在挑战他——随时。”
qnx不说话了,但眼神里的敌意没散。
第一天的训练从一场模拟赛开始。题目是jzk出的,三道题都刁钻古怪:第一题要用FFT优化高精度乘法,第二题是动态仙人掌图,第三题……干脆没给题目描述,只给了一组输入输出数据,要求反推算法。
“这是人做的题吗?”qnx哀嚎。
xyy却眼睛发亮:“有意思。第三题像是机器学习里的强化学习问题,但用OI方法解……”
我已经开始敲代码了。这些题,我上一世都见过——不,不是见过,是亲手解过。那是2025年某场网络赛的原题,出题人是个匿名的天才,后来被扒出是……是……
记忆又断层了。
一小时后,我第一个提交。系统弹出分数:300。qnx和xyy都是200分,卡在第三题。
jzk不知何时出现在身后,手里端着那杯永恒的枸杞茶。
“第三题,你怎么想到用蒙特卡洛树搜索的?”他问。
“直觉。”我说。
“好一个直觉。”jzk笑了,“这题是我从AlphaGo的论文里改的,国内还没人公开解过。”
我心里一紧。糟了,又超前了。
但jzk没追问,只是拍拍我的肩:“下午有个特殊训练。你们三个,跟我来。”
他带我们穿过创新中心的后门——那里竟还有条暗道,通往一个更小的房间。房间里没有窗,只有三台电脑,屏幕上滚动着绿色的字符流,像《黑客帝国》里的场景。
“这是学校的‘黑箱’系统。”jzk压低声音,“连接着一些……不公开的题库。包括历年IOI的备用题、国家队训练题,甚至还有一些未解之谜。”
qnx倒吸冷气:“这不算作弊吗?”
“当然算。”jzk坦然,“所以今天这里发生的一切,出了门就要忘掉。你们看到的题,不能外传,不能讨论,连梦里说梦话都要小心。”
他调出一道题:“这是2008年IOI的废案,因为太难被撤下了。要求:在多项式时间内判断一个图是否为‘完美图’。至今没有公认的解法。”
我们三人对视一眼,然后同时扑向电脑。
时间在寂静中流逝。qnx尝试用线性规划,xyy想从图论性质入手,我……我闭上眼睛。
记忆深处,有什么东西在翻腾。上一世,我好像解过这道题。不,不是解过,是见人解过。那个人是……
“可以用奇偶性。”我忽然开口,“完美图的定义等价于其所有诱导子图都不是奇环或反奇环。这可以通过检查所有顶点集的二分性来判断,用到了强完美图定理。”
jzk手里的枸杞茶,第二次掉在了地上。
“你……”他声音发颤,“你读过Berge的论文?”
“梦里读过。”我熟练地说。
“又是梦。”jzk蹲下身,一片片捡起陶瓷碎片,“【请输入文本】,你的梦里,到底装了多少东西?”
我没法回答。
那天的训练结束后,jzk单独留下我。
“我知道你不是普通人。”他开门见山,“我查过你——小学没参加过任何竞赛,初中摸底考数学只有85分。但你的代码风格,老练得像写了十年。”
“所以呢?”
“所以我想和你做个交易。”jzk从抽屉里拿出一份文件,“这是一份保密协议。签了它,我告诉你一个秘密;作为交换,你要帮我一个忙。”
“什么忙?”
“帮我找一个人。”jzk眼神变得飘忽,“一个失踪了五年的天才。她叫叶诗晨,ID是ysc_Goddess。”
我心脏骤停。
“你认识她,对吧?”jzk紧盯着我的眼睛,“我从你的代码里看到了她的影子——那种独特的优化技巧,那种对常数变态的执着。那是她独创的‘诗晨流’,整个中国OI圈,只有她会。”
“为什么找她?”
“因为她失踪前,留下了一样东西。”jzk调出一张图片,是一段残缺的代码,“这是一个算法的一部分,能解决NP问题的某个子类。如果完整,可能颠覆整个计算机科学。”
他顿了顿:“更重要的是,她失踪那天,给我发了条消息。只有三个字:‘循环者’。”
我手心冒汗:“什么意思?”
“不知道。”jzk摇头,“但这五年,我一直在观察。我发现,每过几年,就会出现一个像你这样的怪物——年龄极小,实力极强,代码风格成熟得不像话。他们中有些人,也会提到‘梦’。”
房间里的空调发出低沉的嗡鸣。屏幕上的绿色字符还在滚动,像无数只眼睛在注视着我们。
“你是第几个,【请输入文本】?”jzk轻声问,“这场轮回里,你是第几个觉醒者?”
我张了张嘴,却发不出声音。因为我也不知道答案。
离开创新中心时,天已全黑。教学楼里空无一人,只有走廊的声控灯随着我的脚步声次第亮起,又次第熄灭,像在玩什么寂寞的游戏。
走到一楼大厅,却看见个人影。是psy,她抱着书包,蹲在公告栏前。
“这么晚还不回家?”我问。
psy抬头,眼睛红红的:“我在看省选的报名通知。”
“你想参加?”
“嗯。”她站起来,拍了拍裙子上的灰,“虽然我是12班的,但……我不想输给5班那些人。”
公告栏上贴满了海报:NOI省选报名、ACM校内选拔、编程马拉松……在最不起眼的角落,有张小纸条,上面打印着一行字:
“寻找队友:一起冲击省一。要求:不放弃,不抱怨,不认输。联系QQ:114514”
那串数字让我眼皮一跳。
“这谁贴的?”我问。
“不知道。”psy说,“但我加了这个QQ。对方通过了,但一句话也不说,只发来一道题。”
“什么题?”
psy掏出手机给我看。那是一道图论题,描述很简短,但难度极高。更诡异的是,这题的风格……和我今天在黑箱系统里看到的,如出一辙。
“你解出来了吗?”我问。
“没有。”psy苦笑,“但我感觉,出题人是在测试什么。好像在筛选……符合条件的队友。”
我记下那串QQ号。回到家,登录一个许久不用的小号,发送好友申请。
几乎秒过。
对方发来消息,只有两个字:
“编号?”
我愣住。回复:“什么编号?”
“轮回编号。如果你是,就该知道。”
心脏在胸腔里狂跳。我颤抖着手打字:“我不知道你在说什么。”
那边沉默了五分钟。然后发来一个压缩包,文件名是“For_The_Chosen.zip”。
我下载,解压。里面是一个txt文件,和一个可执行程序。
txt文件里写着:
“如果你能看到这条消息,说明你已经被选中。运行程序,回答三个问题。通过者,将知晓部分真相。”
我双击那个exe。黑屏,然后跳出白色文字:
问题一:IOI 2022 T3《 Mountains》的最优解时间复杂度是多少?
我输入:O(n log n)。
问题二:你第一次‘觉醒’是在什么时候?
我犹豫了一下,输入:2023年9月13日,CD49中学选拔赛。
问题三:你相信代码可以改变世界吗?
我盯着这个问题,看了很久。然后慢慢敲下:
“我不相信代码能改变世界。但我相信,写代码的人可以。”
屏幕闪烁。跳出一行字:
“欢迎,轮回者第114514号。集会时间:本周五晚十点。地点:老地方。”
程序自动删除,不留痕迹。我坐在黑暗里,听着自己剧烈的心跳。
窗外,CD49中学的钟楼敲响了十下。钟声在夜色中回荡,像某种古老的召唤。
这一世的水,比我想象的,要深得多。
而那个“老地方”——如果我没猜错,应该是指学校后山那个废弃的天文台。
五年前,叶诗晨失踪前,最后被人看见的地方。
(前三章完,约5500字。)