竞赛生们(北京师范大学官网/供图)
8月16日,中国计算机学会突然发布通知,宣布NOIP竞赛暂停。
NOIP全称为全国青少年信息学奥林匹克联赛,分为普及组和提高组两个组别。竞赛暂停,打乱了很多人的备战节奏。但业界普遍认为,竞赛并不会就此取消,更有可能的是改名再来。
其实,NOIP是很多人接触算法竞赛的开始。到了大学,这些人的大部分仍会继续自己的竞赛之路,在ACM国际大学生程序设计竞赛(简称ACM-ICPC)的赛场上继续拼搏。
那些属于竞赛的日子,仍是他们青春岁月中浓墨重彩的一笔。
“不做题会觉得有些空虚”
ACM-ICPC是全球最具影响力的大学生程序设计竞赛。在ACM-ICPC中叱咤风云的选手,大多也曾在NOIP和NOI(全国青少年信息学奥林匹克竞赛)中摸爬滚打。和算法题交手过招,是这些“计算机大神”生活的一部分。
初高中时搞竞赛,当然也存有功利心,想拿竞赛成绩作为名校的敲门砖;但热爱,同样也是他们坚持的动力之一。
到了大学,还在竞赛的坑底躺平,每个人的原因各有不同。北京师范大学信息科学与技术学院研究生孙科心中有遗憾——高中时在弱省弱校,没机会学到什么东西,在NOI中发挥不佳。凭借信息学奥赛保送北京大学的2016级本科生吉如一也有遗憾——高中没有入选国家队为国出征。“到了大学就还想继续比赛。而且高中搞了两年竞赛之后,有些放不下了,不做题就觉得空虚。”
竞赛生们一进大学,就对写代码驾轻就熟。其他计算机专业新生需要把大量时间花在学习和练习写代码上,但竞赛生们能拿这些时间来做些别的事情。比如,继续打比赛。
“用自己学过的算法知识、编程技巧等等去解决一道道题目,可能需要冥思苦想,也可能会做错,但最终解成功时会觉得十分有成就感,这就是算法竞赛最大的魅力。”孙科说。
ACM-ICPC分为区域赛和世界总决赛,团队要在规定的5个小时内完成主办方给出的题目,题目通常为8—13道。和高中时的信息学奥赛不同,ACM-ICPC的题会出得更加包罗万象。“比赛没有超纲的知识。它不仅考编程、算法、数据结构,还可能考到编译原理、计算机组成原理等,涵盖大部分计算机专业课知识点。”孙科说。
ACM-ICPC决赛:重压之下的高手过招
在吉如一看来,如果高中时竞赛基础较好,在区域赛中拿到奖牌并不难。他也很清楚,从实用角度来讲,在区域赛中拿牌就已经足够;再往后参加世界总决赛,边际效益其实会缩水。“世界决赛竞争激烈,拼命训练才能拿牌。”
吉如一记得,2018年决赛前的半个月,他和队友几乎将所有的课余时间都花在了训练上。如果没有课,他们就在机房里从早泡到晚。
但对赛场的渴望会战胜理性的投入产出比分析,竞赛选手终究还是热血难凉,想代表学校、代表国家,和来自世界各地的参赛选手一较高下。
“能跟世界范围内的大神们同场竞技,这件事情本身就已经非常酷炫了,体验大概就是激动的心、颤抖的手,就像奥运会一样。”去年也曾代表北京师范大学参赛的孙科说。
2018年ACM-ICPC决赛就在北京大学邱德拔体育馆进行,这也是吉如一第二次参加总决赛。当时,有来自51个国家和地区的140个团队同场竞技。“压力非常大。”现在回忆起来,吉如一脱口而出的,仍是压力。主场作战,既是优势,也让队员背负了沉甸甸的期待。
题目会以纸质形式发到参赛队员手上。他们最先要做的事就是读题,判断题目的难易程度,制定解题策略。由于三个人只有一台电脑,所以一个人上机操作时,其他两个人就要抓紧时间思考其他题目的解法。
计算成绩时,队伍的解题数量最为重要,其次是解题耗时。ACM-ICPC的题目结果都是当场揭晓,如果提交一次错误答案,就会被罚时20分钟。
比赛机制很有意思,简直像是故意在给选手压力——前4个小时,大家能在现场屏幕上看到所有队伍的做题情况和实时排名,最后一个小时“封榜”,大家只能知道自己队伍的成绩。
这种透明性也是对参赛选手心理素质的极大考验。前4个小时,你是领先还是落后,抬头瞥一眼大屏幕就能看到。每个队伍的名次都随着比赛时间的推移上蹿下跳,根本没谁能吃下什么定心丸。
是的,非常紧张刺激。ACM-ICPC也尽量在这种紧张中创造了些趣味出来——队伍每做出一道题,就会得到一个对应颜色的气球。而且,如果你是第一支攻克下某道题的队伍,还会得到一串非常不一样的气球。
吉如一记得,决赛当天,3个人的状态都不太好。一开始就是逆风局,做得很不顺,最差的时候,比排名前列的队伍落后了整整三道题。“写代码时手都在抖。” 到了后半程,队伍才逐渐赶超上来。
最终,北大拿到了第三名,获得金牌。
“很高兴,也有些失落。就这么结束了。” 根据ACM的规定,同一名选手只能参加两次世界总决赛。所以,大二的吉如一,也就此退役,当了学校ACM-ICPC队伍的学生教练。
竞赛之路,成就与遗憾并存
当然,吉如一面前的路仍然很广。作为竞赛大神,工作可能是他最不需要担心的事情。
孙科和吉如一也都参加过形形色色的其他比赛。说实话,现在的算法编程大赛,实在是不要太多。谷歌、脸书、美团、字节跳动、百度……众多互联网公司都在办比赛,每一次比赛,在吉如一看来,都是一次竞赛人的“大型线下聚会”。
杨博洋曾经也是一名算法竞赛选手,参加过NOIP,也参加过ACM-ICPC。现在,他所在的计算机教育公司计蒜客,也在办自己的比赛“计蒜之道”。
杨博洋告诉科技日报记者,实际上,办比赛的目的之一,还是“聚人”。把那些年轻的有才气的青年学子召集过来,搭建一个他们和企业沟通的桥梁。企业给学生额外面试机会或者入职绿色通道,提前物色或者锁定他们的心仪人选。
不过,在这么多比赛中,ACM-ICPC仍然有其独特的含金量。杨博洋自己就是一个例子,比赛经历是他简历中的加分项。而他在招人时,也会更加青睐竞赛生。“ACM-ICPC是三人组队,就更能体现出学生的综合素质。”它不仅考验代码能力,也考验选手的团队协作能力、沟通能力和抗压能力。“这些都是软件和算法工程师需要具备的特质。”而且,杨博洋觉得,愿意投身竞赛,意味着他们对行业有热爱,这样的人,也更容易在行业中做出成绩。
因为竞赛,吉如一学了很多知识,还认识了很多人。竞赛是个小圈子,选手之间彼此熟悉。“这是一笔宝贵的财富”。
不过,他已经开始将精力更多地转向科研。吉如一是竞赛圈的大神,但当他从赛场走下进入科研实验室时,也会恍然发现,身边的同学已经在其他方向上走了好远。“投入精力搞竞赛确实让我放弃了一些可能性,但我不会后悔。”虽然仍会感到焦虑,但吉如一也在调整心态,要去往另一条赛道上奔跑了——他已确定要在北大继续攻读博士研究生。
“算法知识,编程能力,与人沟通的能力……最重要的还是竞赛的这种独特经历。”孙科一一细数竞赛带给自己的收获,“回忆里有遗憾,也有成就。我觉得没有失去什么,人不可能每条路都走一遍。”(张盖伦)