ICPC 区域预选赛总集篇

梦开始的地方。

2012年

一切都要从2012年的预选赛说起。我能参加这个预选赛,也是挺巧的。

我从高中的时候开始学计算机竞赛。当时也是非常巧,教竞赛的老师来我们班宣传,举的例子都是大神通过学习竞赛、参加国际比赛,最终拿到几万美元全额奖学金、被普林斯顿大学录取的故事。然后我们当时省级联赛报名费大概是30块。于是,这件事情被他一句话总结成了:交三十元,挣三十万。

然后我就去学了,然后就学进去了,然后就拿到了全国赛银牌,然后就保送去了上海交通大学。

能去上交的都是什么水平的人,我心里是有数的,比我那是强到不知道哪里去了。而交大的 ICPC 校队,那更是拿过数次总冠军的超级强队。所以当时上大学的时候,完全没有继续参加比赛的想法,因为肯定没戏。

事情的转机出现在了我2012年来到美国的时候。我上的是一个2+2的项目,在上交上大学前两年,在美国密歇根大学上后两年,然后能拿到两个大学学位。于是我大三就来到了美国。而密歇根大学刚刚好在2011年总决赛成绩极好,以第二名的成绩拿到了金牌,刷新了学校最好成绩。然后这个事迹就被做成了大字报,张贴在了我们计算机系主楼的大厅里。

我本来只是看到了,并没有在意。但是我的室友发现了商机。他心想,上交很强,但是密歇根大学不一定啊。于是他仔细调查了一下,发现2011年总决赛(也就是2010年区域预选赛晋级的队伍)密歇根大学强,完全是因为学校里有一个大神(这个人后来退役成了我们的学生教练),还有一个来一个学期的交换生大神(曾经是中国 IOI 国家队选手),这两位撑起了整个队伍。而那两位之后都已经没有继续参加总决赛的资格了。这两位下了之后,学校直接报废,2012年连总决赛都没进。

然后我室友去读了2011年区域预选赛的题目,然后看了2011年的成绩,然后得出结论:我上我也行。

因为这比赛需要三个人组队,于是他就找到了我。他用一句话就打动了我:“你不想圆梦了么?”

然后他掏出了2011年比赛的题目,说,你看这个题,大水题,你再看这个题,还是大水题。然后我们连看了6道题,都是大水题,然后他说,你看,这不就晋级了。

然后我就加入了。

今年的选拔可谓是一波三折,然后折了。

在校内选拔赛之前,我们发邮件问教练,说这队伍是怎么分配的。我们俩想一队,现在能绑定么。他说不行,为了公平起见,要严格按照排名,前三名一队,然后再三名,然后以此类推。这岂不是还要控分?

但是其实没什么好控分的。在正式选拔赛之前的所有训练赛,我俩都是前二。这有什么控分的必要么。

结果选拔赛的时候炸了。因为之前表现过好,我室友有点过于大意了。他中场的时候在一个难题上花了太长的时间,导致很多简单题没有做。更严重的问题是,这选拔赛在一个周末,分两天进行,你可以随便挑一天。我们都在第一天,然后他在第一天即便如此还是一直排第二,感觉问题不大。然而第二天的时候,突然冒出两个拦路虎。这两位之前的训练从来没来过,压根不知道他们的存在,然后就轻易把我队友超过了。

然后就爆炸了。看这架势我要跟那两位组队了,那两位也都是中国留学生。我是没什么关系,而我室友就非常蛋疼了。这就跟网上最常见的,你叫你朋友陪你去试镜,结果只有你朋友选上了一样。

然后这个比赛结果,我第一,7题,然后两位6题,然后是我室友4题。这个结果差距有点大,怕是很难质疑,除非那两位有人主动退出。

然而最终也没人退出。于是我跟那两位组了队。这两位,我称之为读题队友和酱油队友。读题队友是我之后两年参加总决赛的读题队友,而此时的他跟读题还没什么关系,还是需要码题的。

另一位酱油队友,那可是大有来头。据说在高中时,他名气非常大,跟曹钦翔齐名。曹钦翔何许人也,那可是2008年中国全国青少年信息学奥林匹克竞赛冠军。能跟这位齐名,那得有多强。

然后他就坑爹了,坑了个大爹。

今年区域预选赛之前,我们听说,我们赛区会有一张外卡。本来我们赛区能进三个队,算上这张外卡能进四个。而我们赛区,前三的强队非常强,卡耐基梅隆、滑铁卢大学,以及多伦多大学,前两位经常光顾总决赛奖牌区附近,最后这位,听说我们那年队里有个 IOI 国家队选手。

总之这三位是非常强劲的。不只是在我们赛区,放眼整个北美,那也是数一数二的强,滑铁卢和 CMU 经常能在总决赛拿到北美冠军。后来 MIT 有不少很强的中国竞赛选手加入,北美格局才明显发生变化。

从那几年总决赛的整体表现看,北美赛区在总决赛,算是比较弱的赛区,比非洲、阿拉伯地区和南美洲强,而跟欧洲、亚洲的队伍平均水平完全不在一个档次。也就是说,我们几个,算是在一个弱区里的一个最强区。

然而这并不要紧,因为今年有外卡。所以把他们三个排除,那就只剩下我们了,剩下的学校当年队伍的实力基本上没法看。

所以我们队心态很放松,唯一一个紧张点就是,这个第四名一定要保住。然后我们就跟着学校组织的训练稍微练了练,没做什么额外的训练。毕竟,我跟这两位当时也不是很熟。

然后到了比赛日。总共九道题,其中前八道果断都是水题。不过水题是水题,代码量要求还是稍微有一点的。以总决赛的眼光看,这代码量约等于没有,但是我们当时代码水平也就一般,然后在水题上花了不少时间。CMU 用了一个半小时就把前六题做完了,三小时左右8题,封榜之前就退场了。

而我们队,我和读题队友用了四个多小时,艰难地码完并调对了前6题。而在这期间,酱油队友上来就看了最后一题,也就是最难题。这里要提一句,一般情况下,题目不是按照难度排序的,而这次碰巧最后一题就是最难题,而碰巧酱油队友就是按倒序读题的。

那题是一道几何题。但凡我们当时有点眼界,就应该知道,在区域预选赛,这种几何题只要出现基本上就是防退场了。然而我们的酱油队友,对自身实力那是相当的自信,说这题可做,应该不难,然后就上了。他从几乎是开场就码好了那个题,60多行的程序,一直到比赛结束都没能调对。那是啊,能调对就有鬼了。官方解法足足两百多行的分类讨论,你这60行就要混过去,怕是难度很大。

然后这个题前期就浪费了我们很多电脑时间。到了比赛中期,酱油队友觉得不能再纠结这个几何题了,决定换一个题,然后他继续读题,读到了第七题。这个题也是个水题,我记得就是个普通的汇率换算,然后求个最短路。唯一的坑就是,你不能用实数操作,精度误差太大,过不了,你得用64位整数维护分数。然后酱油队友上来就用了实数,然后又炸了。

一个小时之后,读题队友意识到了不能用实数,决定用分数重写。然后他重写了,然后又炸了。最终,我们也没能调出这两个题。赛后,我们发现,这题就差一个初始化,有个数组没有初始化,结果炸了,只要开始赋值为0,这题就过了。

然后最后一个我看都没看的题,也就是第八题,是一个简单网络流。我但凡看了这个题,就能做出这个题。然而现场压根也没给我机会看。电脑时间都用来调剩下两个题了。

最终我们6题。CMU 退场了,滑铁卢和多伦多也是在三个小时前后就8题了,不过最终没能退场。

赛后总结,酱油队友忽然发现,他这场比赛等于是啥事没干。写了两个题全挂了,对比分零贡献,还花了很多电脑时间。

然后我室友在二队,他比赛的体验更差。他有个队友是美国人,这人的名字用中文谐音,听起来就不太聪明的样子。这场比赛之前,我们没什么特别的感觉。而比赛之后,我队友非常生气,从此之后我们称他为人如其名。

比赛的时候,我室友知道他们队就是纯打酱油的,所以压根也没好好比,很多时间都是在哄着人如其名写代码。然后他就被人如其名的代码能力震惊了。那真是说啥算法都听不懂,写啥代码都写不对,让人看着就揪心。

最终,我们全场排第八,前面四个 CMU 队、两个滑铁卢队、一个多伦多队。看这排名,感觉如果我们晋级了,也是挺尴尬的。

而后,经过了一个月的漫长等待,我们得到的结果是,我们没能晋级。理由是,其实我们赛区本来只有两个晋级名额,第三已经是外卡了。而我们赛区就是因为强,所以年年都能拿到外卡。但是第四就别想了。

祸兮福所倚,福兮祸所伏。只能说还好我们没晋级,不然就成了纯粹去总决赛打酱油的了。这次比赛之后,酱油队友已经到了年限,没法继续参赛了。我、读题队友,还有我室友,也就是数学队友,决定好好训练,认真比赛,不把总决赛当成纯旅游了。

不好,怎么一下子就卷起来了。本来只是想去旅游的,怎么一下子就有梦想了。

而当时的我肯定是想不到,我跟总决赛的缘分远不止于此,将来那可是福泽深厚的。

这个赛季的后半段,也就是2013年初,我们三人还有学校的一些其他人,一起参加了很多训练。CMU 的学生教练是我们学校学生教练的好朋友,他俩都是 USACO 委员会的成员。这就导致我们经常能去 CMU 参加集训,有的时候还能遇到美国 IOI 国家队选手同台竞技,然后被暴打。虽然我们三人当时组队还没参加过任何正式比赛,但是非正式的比赛已经参加了不少了。而非正式比赛的问题就是,我们分工着实是很随意,谁想上谁就上了。当时的我们,还没有什么读题队友和数学队友的区分。

翻找十几年前的邮件,找到了当年副领队发的远古时期的照片一张。

2013年

时间来到2013年,又到了控分的时候。此时,我们三个人已经经过了大半年的正经但是不刻苦的训练,基本功已经比去年强了不知道多少。

今年会有什么拦路虎呢?不知道。事实上,确实也没有。以我们对学校的了解,就不应该有。我们三个好歹都是中国省级联赛一等奖水平,对上上大学才开始学编程的人,打比赛没有任何道理会比不过的。

预选赛有惊无险地通过,我们是前三。其中有个手速飞快的新人令人印象深刻。总共七个题,他飞速码完了3题,比我队友都快,十分吓人。但是他也就是手速快了,最终他也只能做出4题,而我们都至少是5题。

然后到了比赛日。我们的目标是晋级,而教练的目标是干掉滑铁卢。这个目标源自于,我们学校虽然在总决赛拿到过亚军,暴打了滑铁卢,但是在区域预选赛从来就没赢过滑铁卢。而滑铁卢非常强,所以教练一直以这个为目标。

比赛时,依旧采取的是随机码题的策略。读题队友码了至少两个题,在自己找到了天坑 bug 之后,把那道模拟题过了。数学队友看着比赛的最后一题,I题,是一道水题,一直在纠结,这题运算过程中会不会超过18位整数,需不需要高精度。直到我们看到同校的其他队伍通过了这道题目,我们确定这题不需要高精度,因为他们啥实力我们心里门清,他们铁定不会高精度。然后他上了,光速通过了这道题目。

中间有一道几何题,G题,我们看一眼就直接撕了。什么玩意,这是人能做的么?结果确实是,撕得好啊。那题标程将近300行,别说是我们了,后来这比赛被放到了 Codeforces 上,全世界全部大佬都可以来尝试。十年过去了,也没有人能在5个小时之内把这题给过了。

这场比赛,最大的波折来自中间那道网络流,E题。那个题,作为网络流,建模本身就已经不简单了。读题队友和我想出这个题的做法的时候,都大呼过瘾。然后我们把代码敲完,提交,然后果断超时了。然后我们加入了对结果的二分,优化掉了一开始的线性查找,然后提交,然后还是超时了。

这个超时超得感觉还是挺多的。我们每次提交,要五分钟之后才能收到结果,感觉运行时间确实很长。

这个时候,我们已经不知道要怎么办了。我们知道,如果用线性查找,你可以每次不用新建图,而是在原来的图的基础上,找一条增广路就可以了。然而我们不会写。我们只是理论上知道可以这样。这大概就是这题的正解了。

在比赛结束之前12分钟,我们没招了,进行了一些瞎搞的优化,以及一些常数优化,然后疯狂提交。因为每次测评都要好久,我们这些提交直接全部卡住。

最终,我们在比赛结束前大概五分钟,通过了这道题目。通过的提交是7分钟之前的提交。那个时候,我们已经提交了不知道多少次,都卡在测评机里了。看到那个通过的弹窗的时候,我们三人集体叫出了声,现场大概全场都听到了。然后,场上开始有人鼓掌,然后更多的人开始鼓掌。于是我们就收到了来自很多全场其他选手的掌声。

感觉环境也是很友善了,他们甚至都不知道发生了什么,封榜之后,通过的提交是不会显示的。

最终,我们以7题的成绩(跟第一并列题数),以第二名的成绩晋级。然后,我们干掉了滑铁卢。我们不止是赢了滑铁卢,我们把他们挤到了第四名,让他们连总决赛都没进,可以说是干得非常彻底了。后来我们发现,就算最后那道题我们没过,我们依旧能晋级,而且学校顺位还是第二名(学校顺位就是每所学校只看成绩最好的那支队伍之后的排名),可以说是相当稳了。

然后就是今年的训练,跟去年大体上一样,没什么特别的训练,就是有空的时候就团队练练,没空的时候自己练自己的。我和读题队友一起选了一门研究生的算法课。对于绝大部分人来说,这课非常难,属于是研究生阶段能上到的最难的课之一了。后来我博士期间,当过那门课5年的助教,更是深入了解了这一点。

然而当时,我和读题队友是把那门课当水课选的,上课的时候,我们就在教室后面讨论总决赛题目,课基本没听过,最终俩人双双 A+。

这个赛季,我们还去参加了北美邀请赛 NAIPC。这个比赛的前身是去年的芝加哥大学邀请赛,现在正式改名为北美邀请赛。这不是官方赛事,跟晋级总决赛无关,就是邀请了所有北美晋级了总决赛的队伍来比一场。这个比赛后来在北美赛制重构后,逐渐演变成了 NAC,并正式进入总决赛晋级体系。

当年的 NAIPC 那是相当的奢华。比赛场地是一个大型图书馆阅览室,内部看起来超级像霍格沃茨。邀请大家到现场比赛体感非常好,奖金也很高。他们要把比赛奖池做成总决赛级别,冠军12000美元,第二名6000美元,银牌队伍3000美元。

最终我们以第四名的成绩,拿到了银牌,喜提3000美元奖金。这是我参加竞赛,人生中第一次,也是唯一一次拿到奖金。我们也是赶上好时候了,这比赛接下来的几年,奖金池直线下滑,后来已经演变成金牌给250刀亚马逊代金券了。合着你们第一年就把未来十年的预算都花光了是吧。

总共21个队,我们赛区三个晋级队,分别拿到了3、4、6名。由此可见,我们赛区在北美,那是真的强啊!

比赛具体的情况我已经不记得了,就只有印象中,我们在三个小时左右通过最后一道题目之后,就啥也不会了,然后打了两个小时的酱油。

然后在总决赛之前,我就回上交毕业去了,两个队友留在美国。然后就没有然后了,我们并没有什么正经的训练。

2014年

新的赛季开始了。我们吸取了去年总决赛的教训,必须要好好训练。这也太划水了!

不是,怎么越来越卷了。

果然人类的贪念是没有止境的。当你拥有了之后,你只会想要更多。谁能想到,我们一开始就单纯地只是想去总决赛旅游的,现在开始想拿牌了。

今年的选拔赛出现了新的情况。今年我大学毕业了,开始读博士。问题是,跟我一届的上交的都毕业了,其中好大一波人来到了密歇根大学读研或者读博,其中不乏一些非常强力的选手。然后更严重的是,数学队友经过调查,发现今年从国立台湾大学来了一个研究生,这人超强,在总决赛拿到过金牌!他 Codeforces 红名,我们称他为红名大神。

这完犊子了啊。红名大神要是参赛,我们仨人铁定要挂一个。

不过还好,在比赛的宣讲会上,我们遇到了他,得到了他已经没法再参赛了这个消息。于是我们松了一口气。

最终,从上交来的强人,都没有参赛。我们三人继续顺利地包揽前三,成功组队。

今年的预选赛,风不平浪不静。结果倒是没有任何悬念,但是过程令人蛋疼。滑铁卢大学在去年遭遇了重大滑铁卢之后(他们应该是有个超长时间连续参加总决赛的纪录被我们打断了),痛定思痛,今年卷土重来,誓要报仇。最终他们8题拿到第一。之后两个学校7题。而再往后就是5题了。前三的学校断崖式领先,根本毫无悬念。

比赛过程略显惊悚。也不知道这次的命题人在想什么,学什么不好非要学去年总决赛的超难命题风格。开场20分钟,全场鸦雀无声,没有任何题目通过。别说预选赛了,这在总决赛都不正常。滑铁卢冠军队第一次正确提交出现在42分钟,亚军队还有我们队的第一次正确提交都出现在一个小时之后,这合理么?这也就是说,本场比赛是中档题起步的,压根没有简单题。全场22名之后只过1题,42名之后直接挂零。普通的队伍,这场比赛的参赛体验可以算得上是非常糟糕了。

这场比赛没有什么令我印象深刻的题目。我是后来又重新看了题,才发现最后那个几何题,I题,出得相当的好。它需要先用计算几何做预处理,然后用网络流求解。这是个正宗的总决赛级别的题目。当然,现场我们基本是看完就撕了。结果滑铁卢在封榜之后通过了这道题目,这个冠军也是实至名归了。

我们拿到第三,有点小慌。因为讲道理我们赛区还是只能晋级两个队,第三是外卡。但是看这成绩,外卡怎么着都能轮到我们赛区吧。

最终还是有惊无险,顺利晋级。

今年我们依旧参加了 NAIPC,以第六名的成绩拿到了银牌。不过今年的奖金,就已经跟去年完全没法比了:每人150刀亚马逊代金券。怎么感觉这个比赛办了一年就破产了啊。

今年我们做了好多好多训练,希望能在总决赛拿到好成绩吧。

2016年

去年没有继续参与比赛。主要是去年我们的学生教练还在。他继续当教练,就没我什么事了。今年不一样了,这位大神博士读到第五年,决定不读了,直接放弃然后去创业。

我当时反正是极其震惊。在中国人的观念里,这种行为怕是完全无法被理解。你都第五年了,就快毕业了,然后跑路了,你图啥呢。就算是再不开心,你坚持坚持,很快就能毕业了啊,不然沉没成本也太高了。

然而美国人不管你这个那个,随性,想怎样就怎样。于是他就去创业了。

然后我们学校就剩下一个烂摊子。要知道,学校的教授们,也就是领队和副领队,一般是从来不管学生训练的事情的,都是学生教练带着练。他走了,这个真空期就留下了,然后我就上了。感觉我这也是临危受命了。

今年我为我们学校可谓是操碎了心。首先就是找人参赛。去年的时候,我们三人都退役了,结果我们学校区域预选赛的成绩果然惨不忍睹。二队成绩最好,第12名,然后是三队,然后是四队。而一队直接被干到了30名开外。也不知道这个预选赛是怎么选的。由此可见,这个严格按照名次排名的预选赛,也是可以出大幺蛾子的。

因为知道了我们的人才库里没有人才,我只能自己找。今年暑假,我是一门入门算法课的助教,我给当时所有最终名次靠前的学生全部发了邀请,请他们来参赛。以我的眼光看,这些学生的竞赛水平怕是不会很强,想要晋级怕是非常困难,但是聊胜于无吧。

然后学期开始,我准备了练习赛。然后我依旧是按照顺序,联系了每一个排名靠前的人。然后我还在我的上交学弟里,挖掘出了一个有竞赛经验的选手,想方设法,一顿忽悠,总算是让他来参赛了。

最终,还真让我找到了三个有竞赛经验的选手。他们都在中国拿过省级联赛一等奖,实力应该能支撑到晋级。

然而现实总是啪啪打脸。且不说他们这个队最后以极差的代码能力未能晋级,他们连预选赛那关都没过。

这三个人,在练习赛的时候排名一直是前三,这让我放松了心弦,然而正式预选赛的时候,出现了大幺蛾子。

有美国两兄弟,是亲兄弟,我称他们为美国大哥和美国大弟,两人分别冲到了第一和第三。跟2012年我们的情况不同,这俩人练习赛就一直都在,排名一直还行,但是从来没冲到过这么前面。这次感觉是正式发力了。

然后我这三个小弟排名来到了2、4、5。这就很尴尬,要怎么组队呢。他们三个的想法,肯定就是三个人自己组队。尤其是其中有个人英语口语奇差,他要是跟外国人组队了,那怕是对方都要难受死。

然后我们就开始了跟领队的拉锯战。领队坚持要前三组队,然后我说建议听一下队员们的意愿。然后就开始拉扯。拉扯了好多个回合之后,最终领队说,要问一下美国两兄弟的意愿,他们要是同意,那就没问题。

然后美国两兄弟同意了。我个人的感觉是,他们可能也无所谓。按照以往的成绩,这次排名靠前就已经很意外了,至于后面晋级总决赛什么的,当时大概是想都没想过的。

最终,排名1、3、6的选手组成了一队,2、4、5的选手组成了二队。

这个时候,另一个重要人物进入了我的视野,就是排名第六的这位选手,我称之为香港记者。这位也是个中国人,在香港上大学,这个学期来我们学校做交换生,就一个学期。之所以叫他记者,是因为这个人消息极为灵通。关于竞赛的八卦,你问他什么,他全都知道。正应了长者那句:你们有一个好,全世界跑到什么地方,你们比其他的西方记者跑得还快。

选拔赛后,他主动联系我,问我有没有什么训练技巧和一定要学的算法。他上大学开始接触编程,这个学期才刚刚开始接触竞赛,底子算是很薄了。我说,速成的方法我这里还真有。我这么多年在我们赛区参赛,我们赛区的题目是什么风格那是了如指掌了。我知道,这些年几乎每场比赛都会有一道网络流,而且这些年的题目越来越简单。为此,我还特地在选拔赛放了两道网络流,为的就是找到能做网络流的人去参加比赛。

我跟他说,别的算法你都不用管,你就给我专心研究网络流。

结果就是,这个建议真的是帮了大忙了。美国两兄弟都是完全不会网络流的。最终他们队正是香港记者做出了那道网络流,使他们有了足够多的题数,然后才能在比赛最后10分钟极限翻盘,以第二名的成绩晋级总决赛。否则,他们大概就要十名开外了。

不过,当时的我其实更多的精力都放在了二队身上,主要还是私下里叫起来方便,你什么时候叫他们来听训,他们就会来。一队的话,大概就只有正式训练的时候才会来。

这三位的代码能力,着实是令我震惊。有一次我的助教答疑时间,没有人,我就把他们摇过来练一下基本功。就是一个朴素的单源最短路。然后我就碎了。都是省级一等奖选手,你们是如何做到一个半小时连最短路都写不对的。这不禁让我怀疑,莫非我第一年参赛的时候,也是这个水平?

然后他们各种练习赛,各种水题调不对,我各种无语。最终,正赛的时候,果然还是因为代码能力实在是不过关,简单题写不对,让一队给完爆了。

有一说一,这个美国大哥的代码能力超强,手速超快。根据香港记者的说法,他写代码不只是手速快,代码结构也非常严谨。他严格遵照 OOP 写代码,所有东西都建好类,而不是散装函数和全局变量。这在竞赛圈非常少见,因为这样会导致代码量增加,影响速度。不过他这么搞的好处是显而易见的,一旦出了错误,找错误会比散装函数的代码简单很多。

于是我们一队就顺利晋级了,我十分激动,又能去总决赛旅游了。然后我们知道了总决赛地点在美国。然后我很失望。

香港记者第二个学期就回香港了,我们属实是没怎么训练。后来听说,他们在网上也练过了,但是那个效果么,懂得都懂。当年我在交大的时候,我们也声称练过。

除去香港记者,剩下人都还在。因为他们的算法基本功实在是太差了,或者说基本上就是没有,我决定开一门小灶,给大家讲算法。

这纯粹就是为爱发电了,因为上这个课我没有任何收益,纯粹是帮助小朋友。我的本意是让美国两兄弟恶补一下算法。你们好歹晋级总决赛了,常用算法不能啥也不知道啊。

结果这个时候,另一个人走进了我的视野:美国二哥。他在这次预选赛里排名第七,在三队里当领头羊,不过看这架势他肯定是不满意的。

主要是为美国两兄弟准备的课,这两位来了大概6成吧。倒是这位美国二哥,每次都来,你想不记住都不行。最重要的是,因为我讲的速度实在是非常快(因为时间有限,需要讲的东西非常多),导致大概三四周之后就没什么人了。有一次,美国二哥是唯一一个来的人,我对着他一个人讲了一场。

然后就这么讲了一个学期,感觉把我会的东西全都传授给了美国二哥。也不知道他学会了多少。

2017年

转眼又来到了一个新的赛季。

跟去年一样,我继续到处摇人。不过,今年我对这几位美国选手还是有一些信心的,尤其是在美国二哥学会了很多算法,以及美国大哥据说手速又精进了之后。

宣讲会上,我遇到了两个人。这两位从北京大学毕业,来到我们这里读研究生。跟去年那三位不一样的是,这两位都曾经是北京大学校队的选手。虽然都不是一队,但是好歹进过二三四队。简而言之,不只是有竞赛经验,而且有正统的 ICPC 竞赛经验,手速什么的应该是能保证的。这一下我就来劲了。要知道,我在交大怕是四队都进不了,你现在来了北大二队的,那至少打个区域预选赛应该是手拿把掐的啊,我应该都根本不用管他们。

事实上,我也没管他们。

到了校内选拔赛的时候,这两位居然集体翻车了。我个人觉得这次我预选赛题目出得非常好。所有题目都有至少两个人通过,而没有人通过所有题目,冠军是9题,总共12题。这已经是能想到的最完美的比赛结果了。

唯一一个遗憾就是,中间有一道数学题,那个题我可能不该把它放入比赛。我本来觉得它的推导过程极其巧妙,就把它放进来了。而实际上达到的效果就是,你要么本身知道结论,秒了,要么不知道结论,完全无从下手,根本没有人现场推导。这就十分糟糕了。

这场比赛因为题目够多,区分度够大,导致比赛非常精彩,你不到最后一刻根本不知道会发生什么。我邀请了数学队友一起网上观战,结果就是看到比赛最后30分钟各种惊天大逆转层出不穷。先是美国二哥凭借着扎实的算法功底,在倒数15分钟,以9题冲到第一,然后是美国大哥在倒数4分钟,想出了上面说的那道数学题,以8题的成绩冲到第二。在那之前,我们都在说,都怪那道数学题,要是给美国大哥卡出了一队多可惜,结果最后他凭实力翻盘。

然后就是前三名,美国大哥、美国二哥,和一个新来的没见过的美国人,我称他为美国小弟。而这两位北大选手位列第四、第五。主要还是罚时太高了,以及我那道数学题可能确实坑了。感觉美国人都知道,但是这两位都不知道。如果没有那道数学题,这两位都能进一队。

现在这个队伍构成,我还是非常满意的。一队有美国大哥和美国二哥坐镇,区域预选赛层面实力还是能保证的,美国小弟是什么实力不是很重要。二队有这两位坐镇,第三个人不上都行。而且从选拔赛的成绩来看,前五名断崖式领先,第五名8题,第6名已经只有5题了。这样看来,这位确实可以不用上。

然后到了正赛,这一队果然没让我失望。美国大哥太强了,虽然题不是他读的,但是代码都是他写的。一个人一个小时14分钟码过了6个题,直接来到榜首。而后,虽然后继乏力,但是还是又过了两题,以赛区第二名学校的成绩,顺利晋级总决赛。

二队也不差,跟一队同题数,更高的罚时。如果没有一队,他们以全场第三学校的顺位,应该也能顺利晋级。

今年就不需要什么后续了。那两位北大选手跟我说,明年还要继续参赛,那我觉得明年已经稳了。

当我得知今年总决赛在中国举办的时候,我又无语了。行吧,完全是不给我免费旅游的机会。我就当是免费回国了。

2018年

转眼又到了一个新的赛季。

去年的两位北大选手都继续参赛。说实话,他们到底还能不能参赛,我们当时还进行了认真的讨论。一般认为,上大学超过五年的人就不能参赛了。我们后来仔细读规则才发现,有两个条件是‘或’的关系:满足入学年限条件,或者满足出生日期条件,都可能具备参赛资格。

然后我趁着去年在算法课上当助教的机会,又找到了一个选手。这位是上海交大来的博士生,是我的学弟,也有竞赛经验,但是没有 ICPC 经验。我觉得没关系,码题有那两位就够了,这位可以当只看题的那个人。然后这位也是我花了大力气忽悠进比赛的。于是,我又凑齐了一个国产三人竞赛队。今年总决赛地点定得很早,早就知道是葡萄牙了。于是我们四个人拉了个群,就叫葡萄牙旅行团。总决赛能比成什么样随便吧,反正区域预选赛能晋级就行。

然后预选赛的时候就出了大幺蛾子。这三个人,北大一哥、交大一哥、北大二哥,分别以8、5、4题,排位1、3、5位。这想要组一队难度可太大了,这要如何把第五位的北大二哥捞上来?而排名第二的是去年的美国小弟,6题。简而言之,第一名断崖式领先,剩下的人全是酱油位。

而排名第五位的这位,完全是咎由自取。他从比赛一个多小时开始,就跟全场最难题干起来了,一直干到比赛结束都没打过,一度质疑题目数据有误,然后当我跟他说了解法之后,他发现自己的方法不对。完全不知道比赛的时候他在想什么,哪有人这么打比赛的,真是气死个人。

于是北大二哥原地放弃,北大一哥、交大一哥、美国小弟组成了一队。然后我们葡萄牙旅行团正式宣布散群。

本来呢,这个一队努努力也是能进决赛的,结果在区域预选赛的时候,不知为何又犯病,简单题怎么都码不过。最终倒是拿到了赛区第三学校的顺位。然而当年第一的学校9题,第二8题,他们5题,然后官方直接把外卡没收了。

十分无语,他们这完全就是在跟自己战斗了。反正怎么打肯定都是第三,他们但凡发挥好一点点,说不定就拿到外卡了呢。

葡萄牙旅行团正式宣布解散。

至此,我的教练生涯也结束了。整个生涯,6次来到同一个地点参加区域预选赛,作为选手两次晋级,作为教练又两次带队晋级,也算是辉煌过了。

而此时的我还不知道,于我而言,总决赛的全新篇章,即将开启。