网站地图
ACM国际大学生程序设计竞赛

ACM国际大学生程序设计竞赛(英文全称:ACM International Collegiate Programming Contest(简称ACM-ICPC或ICPC))是由美国计算机协会(ACM)主办的,一项旨在展示大学生创新能力、团队精神和在压力下编写程序、分析和解决问题能力的年度竞赛。经过近40年的发展,ACM国际大学生程序设计竞赛已经发展成为全球最具影响力的大学生程序设计竞赛。赛事目前由IBM公司赞助。

ACM国际大学生程序设计竞赛的历史可以上溯到1970年,当时在美国德克萨斯A&M大学举办了首届比赛。当时的主办方是the Alpha Chapter of the UPE Computer Science Honor Society。作为一种全新的发现和培养计算机科学顶尖学生的方式,竞赛很快得到美国和加拿大各大学的积极响应。1977年,在ACM计算机科学会议期间举办了首次总决赛,并演变成为一年一届的多国参与的国际性比赛。

最初几届比赛的参赛队伍主要来自美国和加拿大,后来逐渐发展成为一项世界范围内的竞赛。特别是自1997年IBM开始赞助赛事之后,赛事规模增长迅速。1997年,总共有来自560所大学的840支队伍参加比赛。而到了2004年,这一数字迅速增加到840所大学的4109支队伍并以每年10-20%的速度在增长。

1980年代,ACM将竞赛的总部设在位于美国德克萨斯州的贝勒大学。

在赛事的早期,冠军多为美国和加拿大的大学获得。而进入1990年代后期以来,俄罗斯和其它一些东欧国家的大学连夺数次冠军。来自中国大陆的上海交通大学代表队则在2002年美国夏威夷的第26届、2005年上海的第29届和2010在哈尔滨的第34届的全球总决赛上三夺冠军,浙江大学参赛队在美国当地时间2011年5月30下午2时结束的第35届ACM国际大学生程序设计竞赛全球总决赛荣获全球总冠军,成为除上海交通大学之外唯一获得ACM国际大学生程序设计竞赛全球总决赛冠军的亚洲高校。这也是目前为止亚洲大学在该竞赛上取得的最好成绩。赛事的竞争格局已经由最初的北美大学一枝独秀演变成当前的亚欧对抗局面。

2015年全球总决赛,圣彼得堡国立资讯科技、机械与光学大学AC了所有题目(13道),成为了ACM-ICPC历史上第一支在全球总决赛中AK的队伍,也成为了历史上获得ACM-ICPC全球总决赛冠军次数最多(6次)的队伍,这一表现,被当场比赛主持人称作the best of best of best。

ACM-ICPC以团队的形式代表各学校参赛,每队由至多3名队员组成。每位队员必须是在校学生,有一定的年龄限制,并且每年最多可以参加2站区域选拔赛。

比赛期间,每队使用1台电脑需要在5个小时内使用C、C++、Pascal或Java中的一种编写程序解决7到13个问题。程序完成之后提交裁判运行,运行的结果会判定为正确或错误两种并及时通知参赛队。而且有趣的是每队在正确完成一题后,组织者将在其位置上升起一只代表该题颜色的气球,每道题目第一支解决掉它的队还会额外获得一个“FIRST PROBLEM SOLVED”的气球。

最后的获胜者为正确解答题目最多且总用时最少的队伍。每道试题用时将从竞赛开始到试题解答被判定为正确为止,其间每一次提交运行结果被判错误的话将被加罚20分钟时间,未正确解答的试题不记时。

与其它计算机程序竞赛(例如国际信息学奥林匹克,IOI)相比,ACM-ICPC的特点在于其题量大,每队需要在5小时内完成7道或以上的题目。另外,一支队伍3名队员却只有1台电脑,使得时间显得更为紧张。因此除了扎实的专业水平,良好的团队协作和心理素质同样是获胜的关键。

1.参赛队伍最多由三名参赛队员组成。

2.竞赛中命题10题左右,试题描述为英文,比赛时间为5个小时,前四个小时可以实时看到排名,最后一小时封榜,无法看到排名。

3.竞赛可以使用的语言:C++、C、Java、Pascal。

4.重点考察选手的算法和程序设计能力,不考察实际工程中常用的系统编程,多线程编程等等;

5.选手可携带任何非电子类资料,包括书籍和打印出来的程序等,部分赛区会对选手携带的纸质资料做限制。

6.评委负责将结果(正确或出错的类型)通过网络尽快返回给选手,除此之外不提供任何额外帮助;

7.每个题目对应一种颜色的气球,通过该题目的队伍会得到对应颜色气球。每道题目第一支解决掉它的队还会额外获得一个“FIRST PROBLEM SOLVED”的气球。

赛事由各大洲区域预赛和全球总决赛两个阶段组成。决赛安排在每年的3-5月举行,而区域预赛一般安排在上一年的9-12月举行。原则上一个大学在一站区域预赛最多可以有3支队伍,但只能有一支队伍参加全球总决赛。

入围世界总决赛名额(WF Slots)分为参与名额(Participation Slots)、奖牌名额(Medal Bonus Slots)和其他红利名额(Other Bonus Slots)三类。其中参与名额是从ICPC总部分配给各大洲区的参与名额(ParticipationSlots)中,由各大洲洲区主席确定并分配给洲子赛区的部分,其中各预赛区第一名自动获得参加全球总决赛的资格;奖牌名额是ICPC总部根据上一年度总决赛结果直接分配给获得奖牌的特定学校的名额;其他红利名额是各大洲区主席从ICPC总部争取到的额外奖励名额。

全球总决赛第一名将获得奖杯一座。另外,成绩靠前的参赛队伍也将获得金、银和铜牌。而解题数在中等以下的队伍会得到确认但不会进行排名。

竞赛进行5个小时,一般有7道或以上试题,由同队的三名选手使用同一台计算机协作完成。当解决了一道试题之后,将其提交给评委,由评委判断其是否正确。若提交的程序运行不正确,则该程序将被退回给参赛队,参赛队可以进行修改后再一次提交该问题。程序判定结果有如下7种:

1、Accepted. 通过!(AC)

2、Wrong Answer.答案错。(WA)

3、RunTime Error.程序运行出错,意外终止等。(RTE)

4、Time Limit Exceeded. 超时。程序没在规定时间内出答案。(TLE)

5、Presentation Error. 格式错。程序没按规定的格式输出答案。(PE)

6、Memory Limit Exceeded. 超内存。程序没在规定空间内出答案。(MLE)

7、Compile Error. 编译错。程序编译不过。(CE)

竞赛结束后,参赛各队以解出问题的多少进行排名,若解出问题数相同,按照总用时的长短排名。总用时为每个解决了的问题所用时间之和。一个解决了的问题所用的时间是竞赛开始到提交被接受的时间加上该问题的罚时(每次提交通不过,罚时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队以总用时少而获胜。美国英语为竞赛的工作语言。竞赛的所有书面材料(包括试题)将用美国英语写出,区域竞赛中可以使用其它语言。总决赛可以使用的程序设计语言包括pascal,c,c++及java,也可以使用其它语言。具体的操作系统及语言版本各年有所不同。

区域赛一般分别按10%,20%,30%的比例颁发金,银,铜奖,即一般情况(120队伍)有12支队伍获金牌,24支队伍获银牌,36支队伍获铜牌,其余为优胜奖。

2010年亚洲区域赛中国大陆5大赛区由阿里巴巴公司赞助,获得金牌的选手可以享受绿色通道,进入阿里巴巴实习或参加工作。

2012年亚洲区域赛中国大陆5大赛区由华为公司赞助,有奖金(冠5000、亚3000、季2000,非冠亚季的金牌1200,FB(First Blood,指全场第一个解答出某道题) 800,最佳女队800,顽强拼搏500)。顽强拼搏是全场最后一个AC,且只AC1道题的队伍。

总决赛前十名的队伍将得到高额奖学金:第一名奖金为12000美元,第二名奖金为6000美元,第三名奖金为3000美元,第四名至第十名将各得到l500美元。除此之外还将承认北美冠军、欧洲冠军、南太平洋冠军及亚洲冠军。

竞赛规定每支参赛队伍至多由三名在校大学生组成,他们需要在规定的五个小时内解决八个或更多的复杂实际编程问题。每队使用一台电脑,参赛者争分夺秒,与其他参赛队伍拼比逻辑、策略和心理素质。

团队成员将在多名专家裁判的严格督察下通力合作,对问题进行难度分级、推断出要求、设计测试平台并构建软件系统,最终成功地解决问题。对于一名精通计算机科学的学生而言,有些问题只是精确度的问题;而有些则需要学生了解并掌握高级算法;还有一些问题是普通学生无法解决的,不过对于那些最优秀的学生而言,这一切都不在话下。

竞赛的评判过程十分严格。我们分发给学生的是问题陈述,而不是要求须知。他们会收到一个测试数据实例,但无法获得裁判的测试数据和接受标准方面的信息。若每次提交的解决方案出现错误,就会受到加时惩罚。毕竟,在处理顶级计算问题时,谁也不想浪费客户的时间。在最短的累计时间内,提交次数最少、解决问题最多的队伍就是最后的胜利者。

在IBM开展的众多学术活动中,赞助ACM-ICPC赛事占有十分重要的位置。此举旨在促进开放源代码编程技巧的发展,培养更具竞争力的IT工作人员,从而推动全球创新和经济增长。

ACM(美国计算机协会)是一家科教性质的协会,旨在联合全球计算机领域的教学人员、研究人员和从业人员,开展行业交流活动、共享资源和解决业界难题。凭借绝对的领导地位,ACM始终致力于推行最高行业标准,表彰杰出技术人才,加强计算机行业的整体队伍建设。ACM通过为成员提供终生学习、职业发展及与专业人士联谊的机会,支持其在各自的专业领域取得长足进步。

1977年以来历年全球总决赛的冠军:

年份

总决赛地点

冠军大学

国家

圣彼得堡国立资讯科技、机械与光学大学

2012年

波兰华沙

圣彼得堡国立资讯科技、机械与光学大学

俄罗斯

2011年

美国奥兰多

浙江大学

中国

2010年

中国哈尔滨

上海交通大学

中国

2009年

瑞典斯德哥尔摩

圣彼得堡国立资讯科技、机械与光学大学

俄罗斯

2008年

加拿大班夫

圣彼得堡国立资讯科技、机械与光学大学

俄罗斯

2007年

日本东京

华沙大学

波兰

2006年

美国得克萨斯州

萨拉托夫国立大学

俄罗斯

2005年

中国上海

上海交通大学

中国

2004年

捷克布拉格

圣彼得堡国立资讯科技、机械与光学大学

俄罗斯

2003年

美国洛杉矶

华沙大学

波兰

2002年

美国夏威夷

上海交通大学

中国

2001年

加拿大温哥华

圣彼得堡国立大学

俄罗斯

2000年

美国奥兰多

圣彼得堡国立大学

俄罗斯

1999年

荷兰埃因霍温

滑铁卢大学

加拿大

1998年

美国亚特兰大

布拉格查理大学

捷克

1997年

美国圣何塞

哈维玛德大学

美国

1996年

美国费城

加州大学伯克利分校

美国

1995年

美国纳什维尔

弗赖堡大学

德国

1994年

美国菲尼克斯

滑铁卢大学

加拿大

1993年

美国印第安纳波利斯

哈佛大学

美国

1992年

美国堪萨斯城

墨尔本大学

澳大利亚

1991年

美国圣安东尼奥

斯坦福大学

美国

1990年

美国华盛顿

奥塔哥大学

新西兰

1989年

美国路易斯维尔

加州大学洛杉矶分校

美国

1988年

美国亚特兰大

加州理工学院

美国

1987年

美国圣路易斯

斯坦福大学

美国

1986年

美国辛辛那提

加州理工学院

美国

1985年

美国新奥尔良

斯坦福大学

美国

1984年

美国费城

约翰霍普金斯大学

美国

1983年

美国墨尔本

内布拉斯加大学

美国

1982年

美国印第安纳波利斯

贝勒大学

美国

1981年

美国圣路易斯

密苏里-罗拉大学

美国

1980年

美国堪萨斯城

华盛顿大学圣路易斯分校

美国

1979年

美国代顿

华盛顿大学圣路易斯分校

美国

1978年

美国底特律

麻省理工学院

美国

1977年

美国亚特兰大

密歇根州立大学

美国

ACM国家大学生竞赛自1996年起设立中国大陆地区预选赛赛区,并由上海大学承办,至2001年总决赛止,连续举办五届。之后在境内设置多个赛点,由各大学轮流主办地区性竞赛至今。

历年中国大陆举办区域赛地点:

年份

1996年

上海大学

1997年

上海大学

1998年

上海大学

1999年

上海大学

2000年

上海大学

2001年

上海大学

2002年

清华大学

西安交通大学

2003年

清华大学

中山大学

2004年

上海交通大学

北京大学

2005年

四川大学

北京大学

浙江大学

2006年

上海大学

清华大学

西安电子科技大学

2007年

西华大学

南京航空航天大学

北京航空航天大学

吉林大学

2008年

中国科学技术大学(特别赛区)

北京交通大学

哈尔滨工程大学

杭州电子科技大学

西南民族大学

2009年

浙江大学宁波理工学院

中国科学技术大学

东华大学

哈尔滨工业大学

武汉大学

2010年

哈尔滨工程大学

天津大学

四川大学

浙江理工大学

福州大学

2011年

大连理工大学

复旦大学

北京邮电大学

成都东软学院

福建师范大学

2012年

天津理工大学

浙江师范大学

浙江理工大学

成都东软学院

湖南大学

由上海交通大学承办的第29届ACM国际大学生程序设计竞赛全球总决赛于2005年4月3-7日期间在上海浦东的香格里拉酒店举行。总共有78支队伍参加总决赛的角逐,它们是从来自6大洲71个国家1582所大学的4109支队伍中通过之前的各级区域预赛中脱颖而出的。在当地时间4月6日上午举行的全球总决赛上,东道主上海交通大学代表队是所有参赛队伍中唯一一支解出8道题目的队伍,从而在时隔3年之后第二次夺得全球总冠军。

由哈尔滨工程大学承办的第34届ACM国际大学生程序设计竞赛全球总决赛于2010年2月在哈尔滨举行,上海交通大学再次夺冠。


相关文章推荐:
ACM-ICPC | ICPC | 美国计算机协会 | ACM | IBM | ACM-ICPC | ICPC | 美国计算机协会 | ACM | 德克萨斯A&M大学 | 德克萨斯州 | 贝勒大学 | 上海交通大学 | 美国夏威夷 | ACM-ICPC | 国际信息学奥林匹克 | 程序设计语言 | pascal | c++ | 南太平洋 | 美国计算机协会 | 共享资源 | 圣彼得堡国立大学 | 马拉喀什 | 圣彼得堡国立大学 | 圣彼得堡 | 华沙 | 奥兰多 | 哈尔滨 | 瑞典 | 斯德哥尔摩 | 班夫 | 华沙大学 | 得克萨斯州 | 萨拉托夫国立大学 | 上海交通大学 | 捷克 | 布拉格 | 洛杉矶 | 华沙大学 | 上海交通大学 | 温哥华 | 圣彼得堡国立大学 | 奥兰多 | 圣彼得堡国立大学 | 埃因霍温 | 滑铁卢大学 | 亚特兰大 | 布拉格查理大学 | 费城 | 加州大学伯克利分校 | 纳什维尔 | 弗赖堡大学 | 菲尼克斯 | 滑铁卢大学 | 印第安纳波利斯 | 哈佛大学 | 堪萨斯城 | 墨尔本大学 | 圣安东尼奥 | 斯坦福大学 | 奥塔哥大学 | 路易斯维尔 | 加州大学洛杉矶分校 | 亚特兰大 | 加州理工学院 | 圣路易斯 | 斯坦福大学 | 辛辛那提 | 加州理工学院 | 新奥尔良 | 斯坦福大学 | 费城 | 墨尔本 | 内布拉斯加大学 | 印第安纳波利斯 | 贝勒大学 | 圣路易斯 | 堪萨斯城 | 华盛顿大学圣路易斯分校 | 代顿 | 华盛顿大学圣路易斯分校 | 底特律 | 麻省理工学院 | 亚特兰大 | 密歇根州立大学 | 上海大学 | 上海大学 | 上海大学 | 上海大学 | 上海大学 | 上海大学 | 上海大学 | 清华大学 | 西安交通大学 | 清华大学 | 中山大学 | 上海交通大学 | 北京大学 | 四川大学 | 北京大学 | 浙江大学 | 上海大学 | 清华大学 | 西安电子科技大学 | 西华大学 | 南京航空航天大学 | 北京航空航天大学 | 吉林大学 | 中国科学技术大学 | 北京交通大学 | 哈尔滨工程大学 | 杭州电子科技大学 | 西南民族大学 | 浙江大学宁波理工学院 | 中国科学技术大学 | 东华大学 | 哈尔滨工业大学 | 武汉大学 | 哈尔滨工程大学 | 天津大学 | 四川大学 | 浙江理工大学 | 福州大学 | 大连理工大学 | 复旦大学 | 北京邮电大学 | 成都东软学院 | 福建师范大学 | 东北师范大学 | 天津理工大学 | 浙江师范大学 | 浙江理工大学 | 成都东软学院 | 吉林大学 | 南京理工大学 | 浙江工业大学 | 电子科技大学 | 湖南大学 | 牡丹江师范学院 | 辽宁科技大学 | 西北工业大学 | 华南理工大学 | 北京师范大学 | 上海大学 | 东北师范大学 | 东北大学 | 中国科学技术大学 | 北京大学 | 华东理工大学 | 上海大学 | 上海交通大学 | 哈尔滨工程大学 |
相关词汇词典