拿下Facebook黑客杯四冠王!与Jeff Dean相提并论…ACM竞赛之神的传奇前半生

  • 2020 年 12 月 31 日
  • AI
作者 | 陈大鑫、青暮
近日,Facebook Hacker Cup(黑客杯)总决赛落下帷幕,最终,现年26岁的白俄罗斯选手Gennady Korotkevich(比赛网名:Tourist)继去年拿下此大赛冠军后又双叒叕夺得世界冠军!

1

首个四冠王

Facebook Hacker Cup是由Facebook主办的年度国际编程竞赛,该竞赛于2011年首次举办,旨在寻找可在Facebook就业的顶尖工程人才。在竞赛中,选手需要在固定的时间内解决一系列的算法问题,并且可以使用任何编程语言和开发环境来编写其解决方案。
比赛要求选手编写的程序要尽可能高效,要在最快的时间内写出最简洁、最准确的代码获得第一名。竞赛问题通常是一些著名的算法或者数学难题的全新变种,比如:给定一系列限制条件后问从A城市到B城市的最短路径,或者是怎样以一个特定的方式铺满地板最为高效。选手们必须要快速找出难题背后的逻辑,并相信自己的判断。
“参赛选手必须要很早就确信自己能通过哪种方式解出难题。”一位负责运营Hacker Cup的Facebook工程师说道。
Facebook Hacker Cup与Google Code Jam、Topcoder Open、ACM-ICPC等都属于年度举办的全球编程大赛。目前在该赛事上,获得最多金牌的是俄罗斯(5枚)以及白俄罗斯(4枚)。
而白俄罗斯的四枚金牌都是由同一位选手获得,显而易见,他就是Tourist。
在今年的决赛中,前25名入围者争夺40,000美元的现金奖励,以及Hacker Cup Champion的头衔。最后,前8名入围者均解决了6个问题(A-F)中的5个,但最终Tourist夺得冠军,并成为Facebook Hacker Cup历史上首个四冠王选手。
Tourist的总罚时虽然超过6小时,但是仍然比第二名少了将近一个小时。此外,Tourist是第一个在比赛开始11分钟内解决问题A的选手,从那以后他一直保持着比赛的领先优势,他也是第一个解决问题B(32分钟)和问题C(55分钟)的选手。

而Tourist的厉害远远不止如此,他26年的前半生所取得的成绩令人叹为观止,竞赛圈的选手无一不把他视为神一般的存在。

2

刷题数过万的竞赛之神


Tourist在年仅11岁时便参加国际信息学奥林比克(IOI)竞赛,创造了最年轻选手的记录。在2007-2012年间,他总共取得6枚IOI金牌,其中2009~2011年为冠军。

2013,Tourist取得ACM-ICPC 世界总决赛冠军;
2014年,Tourist包揽 Facebook Hacker cup、TopCoder Open、Google Code Jam 三大个人国际顶级程序竞赛冠军,他也因此成为四大竞赛的大满贯得主
2015年,Tourist又一次取得ACM-ICPC 世界总决赛冠军,且Tourist在这次总决赛中创造了ACM历史上首次AK的记录!(AK:在规定时间内完成所有的规定题目);
2019年,Tourist连续6年霸占 Code Jam 冠军 。
另外Tourist常年霸占编程网站Codeforces第一的宝座,在TopCoder算法竞赛中也常拿第一。
因此,Tourist在ACM领域中堪称神一般的存在。
据说Tourist刷题数过万,他通过天赋和努力取得这些成绩令人不得不服。
 
3

拿过谷歌Offer,但还不想工作

Tourist(Gennady Korotkevich)出生于白俄罗斯东南部的戈梅利。他的父母Vladimir和Lyudmila Korotkevich是白俄罗斯戈梅利国立大学数学系的程序员。
6岁那年,Tourist对父母的工作产生了兴趣。到他8岁时,他的父亲设计了一款儿童游戏,Tourist用这款游戏来学习编程。
或许是注意到了Tourist对编程的兴趣,他的母亲为此咨询了当时部门的同事Mikhail Dolinsky(白俄罗斯一位顶尖的计算机科学老师),Dolinsky给了Tourist一本学习编程的小书。Dolinsky回忆说:“一个月过去了,然后又过一个月……Tourist没有给到任何反馈消息。然后之后的某一天Tourist突然来了,带来了一个密密麻麻的编程笔记本。”
于是乎,当时只有8岁左右的Tourist就开始了经常坐在电脑前默默练习编程的日子。
同样在8岁那年,在一次白俄罗斯全国信息学比赛中,Tourist一举夺得了全国第二名的好成绩,这使他无需参加任何入学考试就能自动进入任一所理工类大学,Tourist在当时的比赛中解决了一个【物体浸入水中】的比赛问题,而Tourist当时甚至不知道阿基米德浮力原理的存在。
小时候的Tourist(右)
后来Tourist在他11岁那年获得了2006年国际信息学奥林匹克(IOI)参赛资格,并在2006年第一次参赛中获得了银牌,这是他首次引起世界竞赛圈的关注。但是从那之后,Tourist就开始了统治编程大赛的历程:他拿下了从2007-2012年6届国际信息学奥林匹克竞赛的金牌。
迄今为止,他也是IOI历史上取得金牌次数最多的竞赛选手。
在2009年的IOI上,时年14岁的Tourist谈到了他的成功:“我只是在比赛中尝试了各种各样的策略,其中有一项是正确的。我不是天才,我只是擅长于此。”
他说他每天在计算机上花费的时间不超过三到四个小时,爱好是足球和乒乓球,或许偶尔也打打台球?
2012年秋天,Tourist移居到俄罗斯,就读于ITMO:圣彼得堡国立信息技术机械学与光学大学(简称圣光机),这是位于俄罗斯的一所历史悠久的大学,在科技工程之相关领域常年居于领先地位。
2013年夏天,他帮助ITMO击败了上海交通大学和东京大学,赢得了在圣彼得堡举行的第37届国际大学编程竞赛世界总决赛。他还赢得了2014年至2020年的年度Google Code Jam。
在2014年的一次采访中,Tourist说,他不确定毕业后的职业生涯计划,“接下来会发生什么还没有决定。”
 “我没有任何具体的或长期的计划,我在大学才刚读完大二。对我来说,首先接受教育然后决定工作是很重要的。也许我会去做科研,但是我真的还没有做好决定。” 随后,Tourist决定继续深造。
在2017年的一次采访中,Tourist表示自己已经多次获得了Google和Yandex的offer,但是(仍然)不想工作……“我正在攻读ITMO的计算机科学硕士学位,我认为接着读书就是我目前要做的。”
2019年,Tourist成为ITMO的博士生。
 

4

 2015年ACM-ICPC夺冠回顾

对于参加过信息学竞赛(尤其是ICPC)的学生们来讲,ACM-ICPC现场那种紧张激烈的气氛大概只有NBA比赛可以相比:
在五个小时内,由三人组成的队伍用一台电脑,通过紧密的分工合作,抢在其他队伍之前升起更多的气球——这是ICPC的传统,每A掉一道题,官方就在桌前升起一个气球,谁领先、谁落后一目了然。
这也是ICPC魅力所在:时间的压力、三种想法与一台电脑的冲突、与队友思想的碰撞乃至争执,升气球的紧迫感,都是对参赛选手心理素质的极大考验;但最终解题成功时会十分有成就感,那一刻的先抑后扬无异于在古龙小说里少年侠客一剑封喉的反转时刻,那些负责快感的神经递质——多巴胺、内啡肽,伴随着少年特有的张扬在一瞬间爆发,犹如刚点燃的小宇宙,让你感觉无所不能,充满能量。
2015年ACM-ICPC决赛现场,比赛进行到第二个小时的时候,Tourist所在的ITMO(圣光机)队伍排名还只是位居第四。
这时Tourist出手,他在十几分钟左右迅速切出一题,这使得本来排在第4位的圣光机一下升到了第二位。
随后,圣光机的排名一路赶超并保持第一。
比赛前最后一个小时,圣光机已经AC出了10道题,排名第一,而这时竞赛强队莫斯科国立大学同样也是解出了10道题,罚时也相差无几,紧紧地追在之后。
而此时为了增加大赛的神秘性和观赏性,ICPC比赛最后一个小时会进行封榜,这种悬念也增加了“最后一刻”的刺激感,“就像最后5秒,詹姆斯抢了个球,3,2,1,然后一扔,压哨绝杀了。”
按照往年大赛选手的水平,解出11题已经隐约是冠军的水平了,这时圣光机大学和莫斯科国立大学谁能先解出第11道从而问鼎冠军呢?
最后的结果超乎所有人想象,同时也超出Tourist本人和其队友的想象。
比赛结束前十几分钟,Tourist和其队友成功AC了最后的第13题,绝杀!
此时比赛的冠军已不再是悬念,Tourist因此助力圣光机大学成为了ACM-ICPC历史上第一支在全球总决赛中AK的队伍,也成为了历史上获得ACM-ICPC全球总决赛冠军次数最多(6次)的队伍,这一表现,被当场比赛主持人称作The best of best of best。

在两次夺得冠军之后,Tourist对竞赛的喜爱仍然未减丝毫,但是受限于每个人最多只能参加两次总决赛,Tourist只好在2015年之后在ACM-ICPC决赛进行的同时在场外切题。

而有时Tourist和其队友甚至会比场内选手解出的题要快要多,这也是Tourist一直被人津津乐道的一点所在。
一个小问题:Tourist写下的最简单的代码是什么?
       

5

可以靠打比赛谋生的“普通的孩子”

图注:Tourist在首届字节跳动冬令营为营员授课

Tourist取得的成绩究竟如何恐怖?
我们不妨对比一下中国最顶尖的竞赛选手,这之中名声最大的当数姚班大神、公认为国内大学生ACM最强者、号称“楼教主”的楼天城。
但即便是强如楼天城,也遗憾未能为清华大学捧回ACM-ICPC总决赛冠军。2007年,楼天城带领的清华队在第一个做出7道题的大好局面下被“打疯了”的华沙大学连下两题翻盘,2009年楼天城重出江湖,结果仍以罚时劣势,再度屈居亚军。
而Tourist两次参赛两次总冠军的成就历史上又有几个能比?
Tourist多年获得过的冠军数不胜数,而同时他每年去各国旅游式的参加各种总决赛赢得奖金已经超过了很多普通家庭一年家庭的总收入。
退役选手 Vladimir Novakovski 曾将 Gennady 称为“唯一一个可以依靠打比赛谋生的人”。
Tourist的这些经历给了我们一个不可靠近的印象。IT World曾经整理出全球最杰出的14位程序员,其中就有Gennady Korotkevich(Tourist),以及Jeff Dean、Linux之父Linus Torvalds。
此外,在彭博社的一篇Tourist参加Facebook Hacker Cup的报道中,我们也能看到他极为独特的一面:当 Gennady 开始思考难题的时候,他的脚开始以每秒钟数次的频率抖腿。他拿起铅笔不停地在手背转动,然后拿过水杯,不停地揉捏下巴。比赛开始 10 分钟后,他终于开始敲键盘。他依然在抖腿,但是双手却像一个速记员一样以不可思议的速度上下翻飞。每过7秒钟,他会眨一次眼。
但在他老师的眼里,Tourist只是一个勤奋的、好学的孩子。他的老师曾说道,“我们的教学关注的是教他如何自学。绝不是凌驾于学生之上的灌输,而是陪伴他左右的关注。
每当Tourist获得新的佳绩,周围的人都夸他“很聪明”时,他父亲会在一旁纠正:“Gennady 只是一个普通的孩子。
无论是Tourist还是他父亲,都希望别人看到他的另一面,“在别人眼中,这一切是因为聪明,而我认为这是因为我选择‘不放弃’。”或许Tourist认为,肯定努力而不是智商,看到的将是不一样的成长空间。
Tourist固然值得我们欣赏,但我们也不能忘记中国队伍在ACM-ICPC决赛曾取得过的傲人成绩:上海交通大学曾在2002年、2005年、2010年拿到过三次世界冠军,浙江大学也在2011年拿过一次世界冠军。
2018年4月,ACM-ICPC在中国北京举行,由北京大学承办,最终北京大学最后时刻完成G题夺得金牌。
而能进入ACM-ICPC决赛其实已经是令很多竞赛选手为之骄傲的一件事情了,因为每年决赛现场都有一些队伍因为赛前训练不足、先场心理紧张、赛题分配失误等等各种综合因素致使“签到题”也遗憾未解出。要是能拿个牌,哪怕是“打铁”,也不算是一件丢人的事情,因为拿牌的队伍往往都是名校、都是历史强队。
无论当年成绩如何,很多年以后,每当想起和队友一起为ACM-ICPC等竞赛日夜训练和奋斗码代码的日子,相信很多选手都会再次热泪盈眶,毕竟,那是属于他们青春中最美好的一段记忆。


点击阅读原文,直达AAAI小组!

由于微信公众号试行乱序推送,您可能不再能准时收到AI科技评论的推送。为了第一时间收到AI科技评论的报道, 请将“AI科技评论”设为星标账号,以及常点文末右下角的“在看”。