国际大学生程序设计竞赛
国际大学生程序设计竞赛(英語:International Collegiate Programming Contest,縮寫:ICPC),旧称ACM竞赛,是一项旨在展示大学生创新能力、团队精神和在压力下编写程序、分析和解决问题能力的年度竞赛。经过50多年的发展,国际大学生程序设计竞赛已经发展成为最具影响力的大学生计算机竞赛。赛事由ICPC基金会 (页面存档备份,存于互联网档案馆)(ICPC Foundation)举办。赛事之前仅由IBM公司赞助,2017年新增JetBrains公司赞助[1],2018年起,美国计算机协会(ACM)不再赞助ICPC,但仍然有许多人习惯称这个赛事为ACM-ICPC竞赛。
历史
竞赛的历史可以上溯到1970年,当时在美国德克萨斯A&M大学举办了首届比赛。当时的主办方是the Alpha Chapter of the UPE Computer Science Honor Society。作为一种全新的发现和培养计算机科学顶尖学生的方式,竞赛很快得到美国和加拿大各大学的积极响应。1977年,在ACM计算机科学会议期间举办了首次总决赛,并演变成为目前的一年一届的多国参与的国际性比赛。迄今已经举办了35届。
最初几届比赛的参赛队伍主要来自美国和加拿大,后来逐渐发展成为一项世界范围内的竞赛。特别是自1997年IBM开始赞助赛事之后,赛事规模增长迅速。1997年,总共有来自560所大学的840支队伍参加比赛。而到了2004年,这一数字迅速增加到840所大学的4109支队伍并以每年10-20%的速度在增长。
1980年代,ICPC的总部改设在位于美国德克萨斯州的贝勒大学。
在赛事的早期,冠军多为美国和加拿大的大学获得。而进入1990年代后期以来, 俄罗斯和其它一些东欧国家的大学连夺数次冠军。来自中国大陆的上海交通大学代表队则在2002年美国夏威夷的第26届、2005年上海的第29届以及2010年哈尔滨的第34届全球总决赛上三次获得冠军。这也是目前为止亚洲大学在该竞赛上取得的最好成绩。赛事的竞争格局已经由最初的北美大学一枝独秀演变成目前的亚欧对抗的局面。
简要规则
ICPC以团队的形式代表各学校参赛,每队由3名队员组成。[2]
比赛期间,每队使用1台电脑需要在5个小时内使用 Java、C、C++、Kotlin 或 Python 中的一种编写程序解决8到13个问题。程序完成之后提交裁判运行,运行的结果会判定为"AC(答案正确)/WA(答案错误)/TLE(超出时间限制)/MLE(超出内存限制)/RE(运行错误)/PE(格式错误)"中的一种并及时通知参赛队。每队在正确完成一题后,组织者将在其位置上升起一只代表该题颜色的气球。
最后的获胜者为正确解答题目最多且总用时最少的队伍。每道试题用时将从竞赛开始到试题解答被判定为正确为止,其间每一次提交运行结果被判错误的话将被加罚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队以总用时少而获胜。
与其它计算机程序竞赛(例如国际信息学奥林匹克,IOI)相比,ICPC的特点在于其为3人团队作战且题量大,每队需要5小时内完成8道题目,甚至更多。除此之外,一支队伍有3名队员却只有1台电脑,使得时间显得更为紧张。因此除了扎实的编程能力,良好的团队协作和心理素质同样是获胜的关键。
区域和全球决赛
赛事由各大洲区域预赛(regional)和全球总决赛(worldfinal)两个主要阶段组成。根据各赛区规则,每站前若干名的学校自动获得参加全球总决赛的资格。决赛安排在每年的3-4月举行,而区域预赛一般安排在上一年的9-12月举行。一个大学可以有多支队伍参加区域预赛,但只能有一支队伍参加全球总决赛。
全球总决赛第一名将获得奖杯一座。另外,成绩靠前的参赛队伍也将获得金、银和铜牌。而解题数在中等以下的队伍会得到确认但不会进行排名。
历届冠军
下面列出自1977年以来,历年全球总决赛的冠军:
在中国的比赛
亚洲区预选赛
国际大学生程序设计竞赛自1996年起设立中国大陆地区预选赛赛区,并由上海大学承办,至2001年总决赛止,连续举办五届。之后在境内设置多个赛点,由各大学轮流主办地区性竞赛至今。
年份 | ||||||||
---|---|---|---|---|---|---|---|---|
1996年 | 上海大学 | |||||||
1997年 | 上海大学 | |||||||
1998年 | 上海大学 | |||||||
1999年 | 上海大学 | |||||||
2000年 | 上海大学 | |||||||
2001年 | 上海大学 | |||||||
2002年 | 清华大学 | 西安交通大学 | ||||||
2003年 | 清华大学 | 中山大学 | ||||||
2004年 | 上海交通大学 | 北京大学 | ||||||
2005年 | 四川大学 | 北京大学 | 浙江大学 | |||||
2006年 | 上海大学 | 清华大学 | 西安电子科技大学 | |||||
2007年 | 西华大学 | 南京航空航天大学 | 北京航空航天大学 | 吉林大学 | ||||
2008年 | 中国科学技术大学 | 北京交通大学 | 哈尔滨工程大学 | 杭州电子科技大学 | 西南民族大学 | |||
2009年 | 浙江大学宁波理工学院 | 中国科学技术大学 | 东华大学 | 哈尔滨工业大学 | 武汉大学 | |||
2010年 | 哈尔滨工程大学 | 天津大学 | 四川大学 | 浙江理工大学 | 福州大学 | |||
2011年 | 大连理工大学 | 复旦大学 | 北京邮电大学 | 成都东软学院 | 福建师范大学 | |||
2012年 | 东北师范大学 | 天津理工大学 | 浙江师范大学 | 浙江理工大学 | 成都东软学院 | |||
2013年 | 电子科技大学 | 浙江工业大学 | 南京理工大学 | 湖南大学 | 吉林大学 | |||
2014年 | 牡丹江师范学院 | 辽宁科技大学 | 西北工业大学 | 北京师范大学 | 华南理工大学 | 上海大学 | ||
2015年 | 东北大学 | 东北师范大学 | 北京大学 | 中国科学技术大学 | 华东理工大学 | 上海大学(决赛) | ||
2016年 | 大连海事大学 | 东北大学 | 北京大学 | 中国石油大学(华东) | 上海大学(决赛) | |||
2017年 | 新疆大学 | 东北大学 | 西北工业大学 | 中国石油大学(华东) | 北京大学 | 广西大学 | 香港理工大学 | 上海大学(决赛) |
2018年 | 东北大学 | 南京航空航天大学 | 中国矿业大学 | 河南理工大学 | 北京大学 | 中国石油大学(华东) | 香港城市大学 | 西北工业大学(决赛) |
世界总决赛
由上海交通大学承办的第29届国际大学生程序设计竞赛全球总决赛于2005年4月3-7日期间在上海浦东的香格里拉酒店举行。总共有78支队伍参加总决赛的角逐,它们是从来自6大洲71个国家1582所大学的4109支队伍中通过之前的各级区域预赛中脱颖而出的。在当地时间4月6日上午举行的全球总决赛上,东道主上海交通大学代表队是所有参赛队伍中唯一一支解出8道题目的队伍,从而在时隔3年之后第二次夺得全球总冠军。
由哈尔滨工程大学承办的第34届国际大学生程序设计竞赛全球总决赛于2010年2月在哈尔滨举行,上海交通大学再次夺冠。
参考文献
- ^ JetBrains. JetBrains to support the ACM-ICPC. blog.jetbrains.com. 2017-03-23 [2017-10-04]. (原始内容存档于2017-10-05) (美国英语).
- ^ [1] (页面存档备份,存于互联网档案馆) 每位队员必须是在校学生,有一定的年龄限制,并且最多可以参加2次全球总决赛和5次区域选拔赛。
- ^ User, Super. 亚洲赛站. acmicpc.cn. [2017-05-26]. (原始内容存档于2017-06-06) (中文(中国大陆)).
- ^ Asia East Continent Contests. icpc.baylor.edu. [2020-03-03]. (原始内容存档于2020-03-03).
外部链接
- 国际大学生程序设计竞赛官方主页(页面存档备份,存于互联网档案馆)(由贝勒大学维护)
评测网站
- Universidad de Valladolid的在线裁判系统
- Topcoder竞赛网站(页面存档备份,存于互联网档案馆)
- 杭州电子科技大学的在线裁判系统(页面存档备份,存于互联网档案馆)
- 北京大学的在线裁判系统(页面存档备份,存于互联网档案馆)