联系电话
010-62513057
ACM亚洲赛区杭州站金牌
欧阳典
ACM国际大学生程序设计竞赛(英文全称:ACM International Collegiate ProgrammingContest(ACM-ICPC或ICPC)是由美国计算机协会(ACM)主办的,一项旨在展示大学生创新能力、团队精神和在压力下编写程序、分析和解决问题能力的年度竞赛。经过近30多年的发展,ACM国际大学生程序设计竞赛已经发展成为最具影响力的大学生计算机竞赛。
竞赛的历史可以上溯到1970年,当时在美国德克萨斯A&M大学举办了首届比赛。当时的主办方是the Alpha Chapter ofthe UPE Computer Science HonorSociety。作为一种全新的发现和培养计算机科学顶尖学生的方式,竞赛很快得到美国和加拿大各大学的积极响应。1977年,在ACM计算机科学会议期间举办了首次总决赛,并演变成为目前的一年一届的多国参与的国际性比赛。迄今已经举办了34届。
最初几届比赛的参赛队伍主要来自美国和加拿大,后来逐渐发展成为一项世界范围内的竞赛。特别是自1997年IBM开始赞助赛事之后,赛事规模增长迅速。1997年,总共有来自560所大学的840支队伍参加比赛。而到了2004年,这一数字迅速增加到840所大学的4109支队伍并以每年10-20%的速度在增长。
1980年代,ACM将竞赛的总部设在位于美国德克萨斯州的贝勒大学。
在赛事的早期,冠军多为美国和加拿大的大学获得。而进入1990年代后期以来,俄罗斯和其它一些东欧国家的大学连夺数次冠军。来自中国大陆的上海交通大学代表队则在2002年美国夏威夷的第26届和2005年上海的第29届,2010年哈尔滨的34届全球总决赛上三夺冠军。这也是目前为止亚洲大学在该竞赛上取得的最好成绩。赛事的竞争格局已经由最初的北美大学一枝独秀演变成目前的亚欧对抗的局面。
ACM-ICPC以团队的形式代表各学校参赛,每队由3名队员组成。每位队员必须是在校学生,有一定的年龄限制,并且最多可以参加2次全球总决赛和5次区域选拔赛。
比赛期间,每队使用1台电脑需要在5个小时内使用C、C++或Java中的一种编写程序解决7到10个问题。程序完成之后提交裁判运行,运行的结果会判定为正确或错误两种并及时通知参赛队。而且有趣的是每队在正确完成一题后,组织者将在其位置上升起一只代表该题颜色的气球。
最后的获胜者为正确解答题目最多且总用时最少的队伍。每道试题用时将从竞赛开始到试题解答被判定为正确为止,其间每一次提交运行结果被判错误的话将被加罚20分钟时间,未正确解答的试题不记时。例如:A、B两队都正确完成两道题目,其中A队提交这两题的时间分别是比赛开始后1:00和2:45,B队为1:20和2:00,但B队有一题提交了2次。这样A队的总用时为1:00+2:45=3:45而B队为1:20+2:00+0:20=3:40,所以B队以总用时少而获胜。
今年已经是我进入ACM队的第二年了,参加了四次比赛我的收获也很大。本来高中三年的竞赛已经感觉有点累了,但是大学的ACM还是重新焕发了我的激情。虽然仍然要为着金牌而努力,但是已经没有高中时期那种不成功便成仁的压力。大学的ACM更像是一种享受,一种闲暇时光做自己所喜欢做的事情。赛场依然是那个赛场,但是心态的转变让我逐渐越来越热爱程序设计竞赛。
我们队伍在赛程的选择上也经过了不少的考究。因为一个队伍只能参加两场,所以我们选了最开始的长春站和靠后的杭州站。我们学校的ACM训练是不多的,所以我们希望先比一次,找出自己的错误和不足,然后再接下来的时间及时修正,再参加比较靠后的比赛。这也取得了不错的效果,在最后的杭州站中,我们尝试了9题,做出了8题,也是历届比赛中最多的。
长春站我们是以一种练兵的心态,所以也做得比较轻松。作为第一站,我们的状态比较一般,最终以5题银牌的成绩结束比赛。杭州站我们一开始发挥的很不好,最差的时候掉落到了六七十名,但是我们一直在追赶,在连续通过几题之后,在比赛结束前一小时,我们已经进入前十。最后一小时我们希望再做出两题,但是由于时间和算法选择的问题,最终只做出了一题。无论怎么说,这次比赛也基本发挥出了我们自己的水平,虽然略带遗憾,但是我们希望再接下的时间里再接再厉,取得更好的成绩。