上周六 14 时,西北工业大学长安校区 49-th ICPC EC Final 赛场,看起来一切井然有序地正常发展着。经过一个小时左右的有一点重工业的代码实现,和 TLE 后对字符串处理的优化,我在两时半成功通过了模拟题 E 题;然而我们队伍和很多倒闭的队伍一样被卡在了 F 题。队友很早就想到了一个构造思路,但 WA 后分析发现并不满足题中的限制条件。他们尝试了几种不同的优化,但提交总是停留在 WA 状态,比赛开始四小时封榜后,仍没有看到任何转机,仿佛西安就要成为这个临时拼凑的队伍的葬身之地一样。
我并没有参与这一题的解决,在旁边对着更靠后的两题思绪游离,因为就算 F 能够通过,以目前的罚时也得不到一个好结果。看到队友几乎无计可施,我提出自己似乎发现了 H 题某种做法,通过画一条曲线转化问题为二维偏序。队友说反正已经没有办法了,就直接开写吧。在写下输入数据的代码之后,我才发现不对劲;这个解法看起来漂亮,但实际上并不是一个良定义的算法,于是把机器还给队友给解法再卡卡常。四小时半,队友将随机化解法改成当解不满足要求时循环重新随机,出乎意料通过了!我们的心情稍微平复了一些,我回到电脑前对着无法继续的程序继续苦思。一段时间后,ben 神告诉我,他认为把解法内点改成外点就可以了。我看了之后感觉非常合理(赛后检查后,感觉每一步都非常自然,是“就应该这么做!”的感觉),于是对着画图仔细修改代码。然而我发现我并不会写二维偏序最长链要用到的树状数组(哈哈,这就是兴趣入门选手的基本功),又一次把电脑交回 ben 神。测试样例后发现我的“仔细”有错误,改对后提交了代码。比赛接近结束,评测压力大,迟迟没有状态返回,我们回到 IDE 继续检查。一段时间后回到浏览器,绿色的 Accepted 刺激着我们的双眼。我们成功了!在 20 分钟左右连续通过了两题,从银牌中游翻盘到了金牌!我们鼓掌欢呼,难以抑制心中的喜悦。我拿出一天在某不知名超市买的糖果,大家都吃了颗糖压压惊。
从赛场出来拿到手机,得知同校和我们一起倒闭的另外两队(封榜前排名连续)中,一队封榜后过了三题,不由得感叹还是他们技高一筹,但此时并不想和他们比较了。第二天华为挑战赛,写了个基本的引用计数+定期 BFS,拿了 3000。
(我并不想写流水账,这篇文章想写的主题也不是 ECF 游记,然而我必须把前因交代干净,于是还是写了一段流水账。)
闭幕式办的也是我难以想象(预期之中)的烂,甚至讲题人到讲一半被拉下来留时间给企业宣讲。滚榜还是留有一些悬念的,毕竟这组题目后期过题的人很多,好在最后平安降落金牌区(虽然差一点就银了)。拿到牌子后我区赶回北京的飞机,问 ben 神他是否还能拿下牌子,他笑道:“你拿着吧,你都退役了。”
是啊,我当然是想要这块牌子的。曾经我还以为奖牌要上交给学校,后来得知早已没有了这样的规定;然而我此时手中一块奖牌都没有,总不能以后回想起 ICPC 生涯都没有实物留念。非常感谢 ben 神带队,让我在至少作为科大本科生的最后一场 ICPC 没有留下遗憾;他有超常的思维能力,能够快速找到解决问题的关键思路,在前后期都发挥了巨大的作用,毫无疑问是队伍的关键人物。
回想起年初的(上一赛季) ECF,我们队发挥超常名列前茅,然而在一题随机化思路确定无误的题目上始终得不到正确结果,遗憾没有更进一步。赛后,在上海大学的校园内,我向 ben 神表示,我们一个赛季已经几乎得到了可以得到的最高成就,再进一步难如登天,由于要应对升学,我可能会选择不再继续。“但你们两位作为低年级还前途无量,这赛季我拖累了你们,你们可以找更强的队友冲击更高峰。”(确实,当年我只是一个对算法竞赛和对自己实力认识都不清的小橙名,厚着脸皮误入了两位 NOI 银的巅峰队伍,开启了第一个 ICPC 赛季的被带飞体验。)之后 ben 神表示,他也只是打着玩玩,也许可能也不会再打了。在那之后很久我终于登上了 codeforces 红名,在 cnblogs 这个网站上同样发布了一篇 blog,内容是毫无组织的流水账和烂尾的牢骚,是对未来无望的遗憾。时间可以改变的太多了,当时我们是否能想到,一年的时间内发生了如此之多?
这个赛季机缘巧合下我和 ben 神又误入了同一个队伍。他是因为打着玩玩,我则是因为我一直不会社交,也没有熟人,找不到强的队友,我们填表被分配到了一起。第三位队友则纸面实力比上赛季队友弱,是没进省队的文化课选手。
这次的发展似乎比上赛季更有戏剧性。在暑假保研尘埃落定之后我又回到了算法竞赛,在 8-10 月进行了大量的训练。恰巧那段时间 universal cup 的题比较简单且对我的胃口,在成都站之前我的自信达到了顶点;赛前我跟队友说笑,我认为自己已经具有了相当强的水平,也许自己一个人都可以拿金。
成都站前一天我试图出去走走,然而因为喜欢睡午觉,时间只来得及在青羊宫和武侯祠随便看看。之后又去市中心转了转。
结果其实很贴近我的估计。赛站队伍的竞争较弱,且题目较简单,队伍轻松拿下了比较高位的金牌。我体验到了前所未有的参与感,在 9 题中写了 5 题。最后,第三位队友给出了第 10 题的数学推导,我随即指出这应该是 wqs 二分套决策单调性的经典题型,赛前一段时间写过相关的题的。然而这题卡精度且卡常数,偏偏我处理相关问题的代码功底不足,还选择了一种奇怪的精度比较差的写法,在 299 分钟胡乱改了几个参数,手颤抖着按下提交键,看到了绝无第二种可能的 WA 状态。
赛后我去找蒋老师看了这题的通过代码,并且浪费了他十几分钟和他谈人生。我留下了谈话的录音,并且之后给他加上了字幕,发到了自己的群里。我向他介绍了自己的情况,告诉他“在这个时候其实更好的结果不能给我带来什么,只是我非常需要这样的得到关注的机会,能够像大家证明自己的能力。”蒋老师回答我:“其实我之前也曾抱着很渴望得到别人认可的感觉,但在我看来,从大学才开始学,你现在能到这种成都,实力其实挺厉害的。如果还要继续付出的话,冲成功了当然是件好事,关键是如果失败你要能承担这个后果;不能当成一种赌博,抛弃现在的一切全部投入到上面,之后你要自己想一想,到底要付出多少才是你能承受的。我的理解是,关键是你要在付出努力的过程中收获一些比如快乐、成就感的事物,不能太把结果看成一回事,这样的话就比较好。最后还是看你怎么权衡考虑。不管怎么样,包括工作、学习还有比赛也好,祝你一切顺利。”这段话给我留下了非常深刻的印象,非常感谢哥哥给我的启发。现在看来,不知道其中有多少是安慰我的,但很多内容确实是一语成谶。在成都之后,我开始忙于其它的事情,每天的休息时间都不多,更别提算法竞赛训练,只能忙里偷闲打打比赛,看看题。正是这样的状态下,我经历了两场噩梦。
也就是说我们参加了 CCPC 重庆站和 ICPC 沈阳站。我们体验到了三个人对着榜上过飞了的题,却不熟悉相关领域,没有丝毫想法;体验到到在前期开了非常脏的计算几何题,一直拖到大后期才过;体验到因为这样的情况,完全有把握的题差一点时间,差一些平静的心态而没有调出来。我们连续收获了两个银牌,从高峰到低谷,就像当头两棒,对我造成了极为巨大的打击。
然而在 EC Final 看到 H Accepted 的那一刻之后,这一切都一笔勾销了;甚至能让人认为,说不定这些才是一个平常的 ICPC 队伍应有的体验,也是竞技体育的一种魅力所在。从场馆出来后,ben 向我说他觉得 ICPC 又有意思起来了,也许他下一年会找一找比较强的队友打一打,我对他的未来感到期待。
是啊,算法竞赛多好玩啊!尽管很多人仅将它当做职业生涯的跳板,若不是因为有意思,怎会有如此多不同背景、不同能力的人心怀着热爱为其努力呢?
不小心又写了很多流水账。现在我想表达什么?我想到一部动漫《乒乓》,有关天赋、热爱与生涯的故事。在哪个领域又不是这样?我大二上学期以 algs4 为引开始接触到算法竞赛,半年多后CF达到橙名,单挑省赛打金,一年多后蹭到了赛季全金,而至今正好大约两年半。不知道对于多少人这是梦寐以求的成绩,曾经我也认为自己有一点天赋异禀;然而之后 CF 达到瓶颈,而且到了更大的舞台(例如前不久的 Accepted 挑战赛),得以重新审视自己,才意识到自己只不过是「有基本的能力和兴趣,并付出了努力」的人之中再普通不过的一员而已。相比一些人我没有足够的资源,相比一些人我没有足够的热爱、自驱力和付出,最后才轮到相比更多人天赋不足。同样,三年多前我作为纯高考生惊险进入少年班,在此才看到了很多完全不同的世界。
这次我并不是在倒苦水。刚刚也说了,这一年算法竞赛的成绩远远不如上一年,但它给我带来了很多快乐、享受,也有一些痛苦和遗憾。正如蒋老师上面说的这句话,最可贵的不是结果,而是回过头来,发现自己收获了快乐、成就与感悟,也算是不枉此行;无论做出什么样的抉择,都不应沉沦于后悔之中。至于遗憾,遗憾才是人生中的常态。这让我想起另一件事,我是手游《猫和老鼠》的开服玩家,虽然在中学阶段时断时续,至今也五年多五千多场了。游戏已经进入其生命的末期,这赛季我想要把猫段位打上猫皇,然而在相对比较高强度的堆场次堆上传奇二之后,我停手了,去找代打象征性完成这个心愿。虽然继续练技术堆时间下去也许并不是不能完成这一目标,但不说是否背离了娱乐的初衷,也一定会很快玩腻的;这就属于蒋老师说的“代价不能承受”的赌博。
写这篇文章的中途也是跨年了。前天坐飞机回到北京的路上想了很多,本来是打算昨天写一写的,然而玩了一晚上;写作能力又不足,终于还是完全没能在跨年前写完;感觉还有很多想到的东西没能写下来,但总之写了三个多小时准备发布了,再烂尾一下吧。所以这是否是按照惯例的退役小作文?虽然我由于年龄理论上将来还有很多机会,但随着身份的变化我或许应该做出调整。随着 AI 的不断进步,我可以确信今年也许是算法竞赛受到剧烈影响前的最后一年;无论是什么样的影响,也许在现在结束不失为一个好的选择,说不定之后还有机会训一个 AI 重新杀回到这个盛衰兴亡,此兴彼落的古战场。对我个人来说,目前可能想要去多探索探索,去寻找下一个可以托付自己的精力的爱好,也希望从中获得成就与成长;事业什么的就再往后再说吧。新年新气象,无论接下来会发生什么,希望大家充满希望地向下一个目标进发。
我能够意识到自己和自己写下的文字仍然非常幼稚,这篇文章可能很适合被一些人用来批判和解构。但总之欢迎转发!
最后按照惯例应该推一首歌,挑了 Hideaway(https://music.163.com/song?id=2140337026)。最近我用 Hideaway 做 QQ 昵称,原因之前在空间说过,是因为希望有一个可以暂时逃避一切的地方(算法竞赛可以算一个这样的地方)。不过虽然现在这样的心情没有改变,挑这首可能没有什么特别的原因,主要还是喜欢 DnB 吧。