ACM国际大学生程式设计竞赛(英文全称:ACM International Collegiate Programming Contest(简称ACM-ICPC或ICPC))是由国际计算机协会(ACM)主办的,一项旨在展示大学生创新能力、团队精神和在压力下编写程式、分析和解决问题能力的年度竞赛。经过近40年的发展,ACM国际大学生程式设计竞赛已经发展成为全球最具影响力的大学生程式设计竞赛。赛事目前由方正集团赞助。
基本介绍
- 中文名:ACM国际大学生程式设计竞赛
- 外文名:ACM International Collegiate Programming Contest
- 简称:ACM-ICPC、ICPC
- 主办方:国际计算机协会(ACM)
历史背景
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。
2015年ACM-ICPC全球总决赛开幕式现场

2018年4月,ACM-ICPC在中国北京举行,由北京大学承办,最终北京大学最后时候完成G题夺得金牌。
简要规则
ACM-ICPC以团队的形式代表各学校参赛,每队由至多3名队员组成。每位队员必须是在校学生,有一定的年龄限制,并且每年最多可以参加2站区域选拔赛。
比赛期间,每队使用1台电脑需要在5个小时内使用C/C++、Java和Python中的一种编写程式解决7到13个问题。程式完成之后提交裁判运行,运行的结果会判定为正确或错误两种并及时通知参赛队。而且有趣的是每队在正确完成一题后,组织者将在其位置上升起一只代表该题颜色的气球,每道题目第一支解决掉它的队还会额外获得一个“FIRST PROBLEM SOLVED”的气球。
特殊荣誉气球

最后的获胜者为正确解答题目最多且总用时最少的队伍。每道试题用时将从竞赛开始到试题解答被判定为正确为止,其间每一次提交运行结果被判错误的话将被加罚20分钟时间,未正确解答的试题不记时。
与其它电脑程式竞赛(例如国际信息学奥林匹克,IOI)相比,ACM-ICPC的特点在于其题量大,每队需要在5小时内完成7道或以上的题目。另外,一支队伍3名队员却只有1台电脑,使得时间显得更为紧张。因此除了扎实的专业水平,良好的团队协作和心理素质同样是获胜的关键。
竞赛特点
1.参赛队伍最多由三名参赛队员组成。
大赛现场

2.竞赛中命题10题左右,试题描述为英文,比赛时间为5个小时,前四个小时可以实时看到排名,最后一小时封榜,无法看到排名。
3.竞赛可以使用的语言:Java, C, C++, Kotlin 和 Python。
4.重点考察选手的算法和程式设计能力,不考察实际工程中常用的系统编程,多执行绪编程等等;
5.选手可携带任何非电子类资料,包括书籍和列印出来的程式等,部分赛区会对选手携带的纸质资料做限制。
6.评审负责将结果(正确或出错的类型)通过网路儘快返回给选手,除此之外不提供任何额外帮助;
7.每个题目对应一种颜色的气球,通过该题目的队伍会得到对应颜色气球。每道题目第一支解决掉它的队还会额外获得一个“FIRST PROBLEM SOLVED”的气球。
赛事构成
赛事由各大洲区域预赛和全球总决赛两个阶段组成。决赛安排在每年的3-5月举行,而区域预赛一般安排在上一年的9-12月举行。原则上一个大学在一站区域预赛最多可以有3支队伍,但只能有一支队伍参加全球总决赛。
北京交通大学队和ICPC主席Bill Poucher合影

入围世界总决赛名额(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.——程式运行出错,意外终止等。(RE)
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美元,第四名至第十名将各得到1500美元。除此之外还将承认北美冠军、欧洲冠军、南太平洋冠军及亚洲冠军。
赛事意义
竞赛规定每支参赛队伍至多由三名在校大学生组成,他们需要在规定的五个小时内解决八个或更多的複杂实际编程问题。每队使用一台电脑,参赛者争分夺秒,与其他参赛队伍拼比逻辑、策略和心理素质。
头脑风暴

团队成员将在多名专家裁判的严格督察下通力合作,对问题进行难度分级、推断出要求、设计测试平台并构建软体系统,最终成功地解决问题。对于一名精通计算机科学的学生而言,有些问题只是精确度的问题;而有些则需要学生了解并掌握高级算法;还有一些问题是普通学生无法解决的,不过对于那些最优秀的学生而言,这一切都不在话下。
竞赛的评判过程十分严格。我们分发给学生的是问题陈述,而不是要求须知。他们会收到一个测试数据实例,但无法获得裁判的测试数据和接受标準方面的信息。若每次提交的解决方案出现错误,就会受到加时惩罚。毕竟,在处理顶级计算问题时,谁也不想浪费客户的时间。在最短的累计时间内,提交次数最少、解决问题最多的队伍就是最后的胜利者。
在IBM开展的众多学术活动中,赞助ACM-ICPC赛事占有十分重要的位置。此举旨在促进开放原始码编程技巧的发展,培养更具竞争力的IT工作人员,从而推动全球创新和经济成长。
ACM-ICPC大赛是一项旨在展示大学生创新能力、团队精神和在压力下编写程式、分析和解决问题能力的年度竞赛。
ACM简介
ACM(国际计算机学会)是一家科教性质的协会,旨在联合全球计算机领域的教学人员、研究人员和从业人员,开展行业交流活动、共享资源和解决业界难题。凭藉绝对的领导地位,ACM始终致力于推行最高行业标準,表彰杰出技术人才,加强计算机行业的整体队伍建设。ACM通过为成员提供终生学习、职业发展及与专业人士联谊的机会,支持其在各自的专业领域取得长足进步。
IBM的承诺

历届冠军
1977年以来历年全球总决赛的冠军:
年份 | 总决赛地点 | 冠军大学 | 国家 |
---|---|---|---|
2019年 | 葡萄牙波尔图 | 莫斯科国立大学 | 俄罗斯 |
2018年 | 中国北京 | 莫斯科国立大学 | 俄罗斯 |
2017年 | 美国南达科他州 | 圣彼得堡国立信息技术、机械与光学大学 | 俄罗斯 |
2016年 | 泰国普吉岛 | 圣彼得堡国立大学 | 俄罗斯 |
2015年 | 摩洛哥马拉喀什 | 圣彼得堡国立信息技术、机械与光学大学 | 俄罗斯 |
2014年 | 俄罗斯叶卡特琳堡 | 圣彼得堡国立大学 | 俄罗斯 |
2013年 | 俄罗斯圣彼得堡 | 圣彼得堡国立信息技术、机械与光学大学 | 俄罗斯 |
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年 | 东北师範大学 | 天津理工大学 | 浙江师範大学 | 浙江理工大学 | 成都东软学院 | |
2013年 | 吉林大学 | 南京理工大学 | 浙江工业大学 | 电子科技大学 | 湖南大学 | |
2014年 | 牡丹江师範学院 | 辽宁科技大学 | 西北工业大学 | 华南理工大学 | 北京师範大学 | 上海大学 |
2015年 | 东北师範大学 | 东北大学 | 中国科学技术大学 | 北京大学 | 华东理工大学 | 上海大学(特别赛区) |
世界总决赛
由上海交通大学承办的第29届ACM国际大学生程式设计竞赛全球总决赛于2005年4月3-7日期间在上海浦东的香格里拉酒店举行。总共有78支队伍参加总决赛的角逐,它们是从来自6大洲71个国家1582所大学的4109支队伍中通过之前的各级区域预赛中脱颖而出的。在当地时间4月6日上午举行的全球总决赛上,东道主上海交通大学代表队是所有参赛队伍中唯一一支解出8道题目的队伍,从而在时隔3年之后第二次夺得全球总冠军。
由哈尔滨工程大学承办的第34届ACM国际大学生程式设计竞赛全球总决赛于2010年2月在哈尔滨举行,上海交通大学再次夺冠。
2018年3月26日,方正集团赞助北京大学ACM-ICPC(国际大学生程式设计竞赛)全球总决赛捐赠仪式在北京大学举行。方正集团、北京大学信息科学技术学院与北京大学教育基金会签署了捐赠协定,北京大学副校长王仰麟向方正集团颁发了“北京大学杰出教育贡献奖”。
2018年,北京大学将迎来120周年校庆。作为校庆活动之一,北京大学将举办第42届国际大学生程式设计竞赛全球总决赛,以此推动计算机教育在中国的普及,激发更多学生学习计算机的热情,为国家人工智慧战略培养和输送更优质的后备人才。今年,和北京大学有着深厚渊源的方正集团首次作为全球钻石赞助商参与这项国际赛事。方正集团成为全球钻石赞助商,使得赛事的承办工作有了坚实的保障。