第二天一早,许诺到考场的时候,门口已经聚了不少人。发布页LtXsfB点¢○㎡
复旦附中的教学楼是老式的,走廊很宽,窗户开得高,阳光从窗外照进来,暖洋洋的。
他没有往人群里凑,找了个靠窗的位置站着,把准考证从书包里抽出来看了一眼,又塞回去。
离他不远的地方,三个人站在一起说话。
说话的声音不大,但走廊里安静,许诺能听见。
“楼天成昨天说那道题有另外的解法,我没听懂。”
“他那个脑子,谁能跟上?”
“听说他这次是冲着满分来的。”
许诺转过头,往那三个人站的方向看了一眼。
靠窗第二个位置站着一个男生,个子不高,瘦,戴眼镜,穿着件灰色的连帽衫,书包单肩背着,手里拿着瓶矿泉水,正低着头听旁边的人说话,嘴角带着一点笑。
楼天成。
楼教主。
许诺上一世听过这个名字,在算法竞赛圈子里,这个名字属于传说级别。
百度贴吧时代就有人叫他“楼教主”,因为他拿奖拿到手软,从高中一路碾压到大学,ACM世界总决赛,金牌。
后来他去了谷歌,去了微软,去了Facebook,做的东西都是顶级的。
许诺刚才瞥到他的时候没往那方面想,现在听到了名字,再看过去,就对上号了。
楼天成大概是感觉到有人在看他,抬起头,目光正好和许诺对上。
他笑了一下,走过来。
他旁边的两人都看着,大概在猜这个人是谁。
“我叫楼天成,”
他伸出手,
“你是?”
许诺跟他握了一下,
“许诺。”
楼天成的眉毛动了一下,
“你就是许诺?”
许诺疑惑了。
自己很出名吗?
楼天成旁边那两个人也跟过来了,其中一个戴眼镜的推了推眼镜,上下打量许诺,
“上个月联赛,山东区满分,附加题也是满分。发布页LtXsfB点¢○㎡”
旁边那个愣了两秒,嘴巴微微张开,看看许诺,又看看楼天成。
他知道楼天成附加题只拿了三十分,满分是五十分。
这个小孩,满分。
楼天成看着许诺,眼神里多了一点东西,
“手机号留一个?QQ也行。有时间一起交流。”
许诺报了自己的号码,楼天成存了,又加了他的QQ。
考场门开了。
许诺找到自己的位置坐下,第三排。
他把笔摆好,准考证压在桌角,等着发卷。
八点整,试卷发下来了。
他先翻到最后看了一眼附加题,题目很长,限制条件密密麻麻——数据规模、时间限制、内存限制、输入输出的格式、边界情况的处理。
他看完,心里大概有数了,然后翻回第一页,从第一题开始做。
考试五个小时,他中间去了两次厕所。
坐在椅子上太久,腰有点酸,站起来走一走,脑子反而更清楚。
第一题是动态规划,他用了四十分钟写完。
第二题是图论,最短路径的变种,加了一些限制条件,他写了一个小时。
做完之后没有急着交卷,又重新检查了一遍,改了边界处理的一个小问题。
然后他开始做附加题。
这道题是真的难。
不是不会,是给的限制条件太多。
数据规模大,时间限制紧,内存限制也紧,常规解法会超时,优化之后又怕内存溢出。
他试了两种方案,都不太满意,最后用一种折中的方法——用哈希表做索引,用位运算压缩状态,在关键路径上加缓存。
写完之后跑了几组自己构造的数据,都过了,但他不确定在大数据下能不能跑进时间限制。
他又优化了几个地方,删掉了一组冗余计算,调整了缓存的大小。
这次他没有提前交卷。
上一次联赛他提前一个半小时交卷,这次他坐满了五个小时,中间改了三次,优化了两次,直到最后一分钟还在想有没有更好的方案。
一点整,考试结束。
许诺交了卷,站起来,活动了一下僵硬的脖子。
走出考场的时候,走廊里已经站了不少人,有人在讨论题目,有人在叹气,有人在对答案。
楼天成站在门口,靠着墙,手里还拿着那瓶矿泉水,看见许诺出来,站直了身体。
他是在等许诺的。
“最后一道题做出来没有?”
楼天成问。
许诺说做出来了。
楼天成的表情有一点不自然,停顿了一下才说,
“那道题我应该是拿不到高分了,卡在时间限制上了。你方不方便给我讲讲?”
他顿了顿,
“我请你吃饭。”
旁边那两个人也跟过来了,听见楼天成说要请许诺吃饭,对视了一眼。
楼天成请人吃饭?
他们认识楼天成这么久,没见过他请谁吃饭。
许诺想了想,他本来打算去网吧处理一下公司的事。
但他看着楼天成那副样子,不是不服气,是真的想知道那道题怎么做。
这种人对技术有一种纯粹的喜欢,和成绩、排名、奖金都没关系,就是想知道答案。
“行。”
许诺说。
两个人往校门外走,楼天成走在他旁边,步子不快,像是在想那道题的解法。
那两个人跟在后面,保持着不远不近的距离,大概是怕打扰他们说话,又不想错过什么。
楼天成先开口,
“你用的什么算法?”
许诺说,
“哈希表加位运算,关键路径上加缓存。”
楼天成想了一下,
“哈希表碰撞怎么处理?”
许诺说,
“开链法,负载因子控制在一以下。数据规模在那里,碰撞概率不高。”
楼天成又问内存怎么控制,许诺说状态压缩,用整型位表示状态,把内存降到原来的八分之一。
楼天成不说话了,走了十几步,忽然说,
“我用的线段树,优化了三次,还是超时。”
他的语气很平静,像是在说一件跟自己无关的事,但许诺能听出来,他不甘心。
不是不甘心输给谁,是不甘心输给一道题。
他们找了学校附近一家小馆子,点了几个菜。
楼天成没怎么吃,一直在问那道题,从算法思路问到实现细节,从时间复杂度问到内存布局。
许诺一边吃一边答,能说的都说了。
楼天成听得很认真,偶尔打断问一句,然后点点头,继续听。
他那两个同学全程没怎么说话,看两人像看两个怪物。
吃完的时候,楼天成说,
“你这道题的解法,比我见过的所有方案都好。你能拿满分。”
许诺说不一定,楼天成说一定。
他站起来,伸出手,
“以后常联系。”
许诺跟他握了握,
“好。”
楼天成付了账,两个人走出小馆子,阳光照在脸上,有点晃眼。
楼天成戴上帽子,跟许诺说了声再见,转身往回走。
走了几步又回头,
“许诺,”
他停了一下,
“清华见。”
许诺笑了,
“清华见。”
楼天成不知道他才初三,等他上清华,楼天成都快读博士了!