
在今年的第40届ACM国际大学生程序设计竞赛中,来自浙大城市学院计算学院计算1302班的李恭荣同学、计算1204班的王辽丰同学和软件1502班的颜姜哲同学在海选中脱颖而出,获得了参与亚洲赛区北京区域赛的资格,并一路凯歌高奏为学院斩获了有史以来的第一枚金牌。这支队伍也在区域赛中的200多支队伍中取得了学校排名第8、队伍排名12的成绩,是学院派出队伍参与ACM程序设计竞赛以来获得的最佳成绩。
冷静从容,方能运筹帷幄
ACM竞赛比赛时间为5个小时,至少命题6题,至多命题10题。在五个小时急迫的时间里,面对着流逝的时间,队员们不仅要快速地对题目进行分析解答,更要时刻保持一颗冷静的心。“每组的电脑只有一台,时间又十分紧迫,所以我们三人都有各自明确的分工,当一人在用电脑编写时,另外两个人会对下一题目进行解析,有的时候一题编写完后另外一题的解法也想出来了。”颜姜哲同学如是说。
本次的突破主要在于最后关键的两题。李恭荣曾经在大二的时候参加过亚洲赛区上海站点的比赛,然而题目比较难,没能拿到奖牌略有遗憾。在本届比赛上,李恭荣吸取了上次的经验,快刀斩乱麻,先解决了简单的题目,然而在关键的两道题目上,队伍还是遇到了困难。此时,大一的新援颜姜哲起到了奇兵的作用,“这些题目本质上还是数学题,而数学题有着一定规律性。”于是,在倒数第二题的时候,颜姜哲通过在数字范围内猜测了一个数字代入题目内,意外地发现了可行性,成功得到了正确的答案。最后一道是关于函数的问题,且留给最后一题的时间只有半个小时,在思路渐渐枯竭的时候,队员们化繁入简,在草稿纸上进行了基础的通项公式以后,得到了以往在题海里挣扎而熟悉的求生之道。终于在最后一分钟时,小组成员们齐心协力得到了成功的答案。
面对这样高强度的赛制要求和题目,仍保持了冷静的头脑,这都要归功于平时的训练。正是因为在ACM实验室里大家不仅完成了老师布置的练习,也自觉地补充更多的知识,完成任务以外的更多编写题目,才能够在比赛时候有条不紊,沉着冷静。
强度训练,做到厚积薄发
“每个星期老师都有一套题目发放在平台上,需要在一个星期内完成。且老师每次会负责制定训练计划,然而师父领进门,修行在个人。除此之外,自己还需要加练。”李恭荣说。平时,他们需要在固定时间段内不停歇地做题,且实施一定的分享制度。若有人成功解决某道难题时,就会把题目的解法分享给大家。在平时训练题目中,会有各类题目,需要自己去写去做,通过大量的题型训练方能做到百战不殆。大一新生颜姜哲表示,“在平时练习中,大家的上课时间会有冲突,但是我们可以相互理解,在准备中、在比赛中相互分享与帮助。”
除此以外,他们还有一套暑假的集训。时间从7月15号开始,到8月20号结束,整整一个多月时间,没有休息。个人赛的集训是和浙大一起集训的,李恭荣表示这让他们有了很好的锻炼机会。从每天早上八点半开始直到中午十二点半结束,偶尔遇到比赛延迟的情况要等到下午一点或者更晚结束。结束之后还会探讨一下题解,交换一下思路,因为只有这样,才能够得到在每场比赛中都得到进步。
个人赛的时候还有夹杂着一两场杭州电子科技大学多校的比赛,杭电多校从中午12点到下午五点,一共五个小时。如果碰巧一天同时有浙大的比赛和杭电的比赛就要从早上八点打到下午五点。除此之外如果觉得自己的训练强度还不够,还会参加杭电举办的bestcoder以及在俄罗斯一个著名的程序设计竞赛网站codeforces的举办的比赛,bestcoder在每周六晚上举行,而codeforces会不定期举办,由于时差的原因,经常是后半夜的比赛。如此的训练强度使得大学刚接触编程的李恭荣受益匪浅,对于题目的理解和掌握能力突飞猛进。
而大一的颜姜哲虽然没有参与暑假集训,但是他在之前就有着丰富的赛事经验,初中参加过信息竞赛获得省一等奖;高中获得全国银奖,因而能够与这支队伍无缝衔接,三人也磨合得恰到好处,成功地实现了摘金的目标。
多方收获,感受鲜美果实
在ACM实验室里扎根,虽然累,但也收获满满。李恭荣觉得在实验室写代码虽然比较辛劳,但是也是一个提升自己的好途径。“敲得代码比别人多,时间比别人多,虽然在以后的工作上并不一定会派上用场,但是熟悉上手程度较其他人相比,依旧是一个优势。同时在实验室内能够找到一群志同道合的同伴们,是大学最美好的回忆。”李恭荣说道。“及时当勉励,岁月不待人”,如今已是大三学生的李恭荣决定还要继续参加明年ACM/ICPC的省赛。谈及以后的打算时,大四的王辽实事求是地给出了先找工作的答案,“是时候让社会检验自己的知识啦。”
学习实验室之外,他们又如普通大学生一般,也有着诸如看电影、觅美食的爱好。他们的身姿时常活跃在操场上,他们的思维则在ACM实验室中发散着。“在ACM实验室里我的收获不仅仅是在思维能力、知识学习上有所提高,这样的练习更锻炼了自己的定力。可以说,无论以后我想要做什么,这种定力都是成功的法宝。”颜姜哲同学表达着自己对于ACM实验室的热爱。
小知识: ACM国际大学生程序设计竞赛是由国际计算机界历史悠久、颇具权威性的组织ACM(国际计算机协会)主办的,世界上公认的规模最大、水平最高的国际大学生程序设计竞赛,该项竞赛分区域预赛和国际决赛两个阶段进行,各预赛区第一名自动获得参加世界决赛的资格。
竞赛中至少命题6题,至多命题10题,比赛时间为5个小时,试题的解答提交裁判称为运行,每一次运行会被判为正确或者错误,判决结果会及时反馈给参赛队伍。在决定获奖和参加世界决赛的队伍时,如果多支队伍解题数量相同,则根据总用时加上惩罚时间进行排名,总用时和惩罚时间由每道解答正确的试题的用时加上惩罚时间而成。每道试题用时将从竞赛开始到试题解答被判定为正确为止,期间每一次错误的运行将被加罚20分钟时间,未正确解答的试题不记时,地区预赛可以使用的语言包括C/C++和Java,每支队伍使用一台计算机,所有队伍使用计算机的规格配置完全相同。