歷史背景
競賽的歷史可以上溯到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年35屆全球總決賽上首奪冠軍。這也是目前為止亞洲大學在該競賽上取得的最好成績,賽事的競爭格局已經由最初的北美大學一枝獨秀演變成目前的亞歐對抗的局面。
2015年全球總決賽,聖彼得堡國立資訊科技、機械與光學大學AC了所有題目(13道),成為了ACM-ICPC歷史上第一支在全球總決賽中AK的隊伍,也成為了歷史上獲得ACM-ICPC全球總決賽冠軍次數最多(6次)的隊伍,這一表現,被當場比賽主持人稱作thebestofbestofbest。
比賽目的
比賽參賽隊員必須在5小時內編完程式並進行測試和調試。該大賽對參賽學生的邏輯分析能力、策略制定和腦力方面具有極大的挑戰性。大賽提倡在壓力較大的情況下,培養學生的創造力、團隊合作精神以解決競賽的問題,從而挑選和發掘世界上最優秀的程式設計人才。
評分辦法
競賽進行5個小時,一般有7道或以上試題,由同隊的三名選手使用同一台計算機協作完成。當解決了一道試題之後,將其提交給評審,由評審判斷其是否正確。若提交的程式運行不正確,則該程式將被退回給參賽隊,參賽隊可以進行修改後再一次提交該問題。程式判定結果有如下7種:
1、Accepted.——通過!(AC)
2、WrongAnswer.——答案錯。(WA)
3、RunTimeError.——程式運行出錯,意外終止等。(RTE)
4、TimeLimitExceeded.——逾時。程式沒在規定時間內出答案。(TLE)
5、PresentationError.——格式錯。程式沒按規定的格式輸出答案。(PE)
6、MemoryLimitExceeded.——超記憶體。程式沒在規定空間內出答案。(MLE)
7、CompileError.——編譯錯。程式編譯不過。(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隊以總用時少而獲勝。美國英語為競賽的工作語言。競賽的所有書面材料(包括試題)將用美國英語寫出,區域競賽中可以使用其它語言。總決賽可以使用的程式設計語言有C,C++及java,部分區域預選賽還允許使用pascal(早年全球總決賽允許使用),Python,Scala等語言。具體的作業系統及語言版本各年有所不同。
競賽規則
ACM/ICPC以團隊的形式代表各學校參賽,每隊由3名隊員組成。每位隊員必須是入校5年內的在校學生,每年最多可以參加2站區域選拔賽,一生最多可以參加2次全球總決賽和5次區域選拔賽。
比賽期間,每隊使用1台電腦需要在5個小時內使用C、C++或Java中的一種編寫程式解決7-13個問題。程式完成之後提交裁判運行,運行的結果會判定為正確或錯誤兩種並及時通知參賽隊。而且有趣的是每隊在正確完成一題後,組織者將在其位置上升起一隻代表該題顏色的氣球,每道題目第一支解決掉它的隊還會額外獲得一個“FIRSTPROBLEMSOLVED”的氣球。
最後的獲勝者為正確解答題目最多且總用時最少的隊伍。每道試題用時將從競賽開始到試題解答被判定為正確為止,其間每一次提交運行結果被判錯誤的話將被加罰20分鐘時間,未正確解答的試題不記時。例如:A、B兩隊都正確完成兩道題目,其中A隊提交這兩題的時間分別是比賽開始後1:00和2:45,B隊為1:20和2:10,但B隊有一題提交了2次。這樣A隊的總用時為1:00+2:45=3:45而B隊為1:20+2:10+0:20=3:50,所以A隊以總用時少而獲勝。
與其它電腦程式競賽(例如國際信息學奧林匹克,IOI)相比,ACM/ICPC的特點在於其題量大,每隊需要5小時內完成8道題目,甚至更多。另外一支隊伍3名隊員卻只有1台電腦,使得時間顯得更為緊張。因此除了紮實的專業水平,良好的團隊協作和心理素質同樣是獲勝的關鍵。
賽事階段
賽事由各大洲區域預賽和全球總決賽兩個階段組成。決賽安排在每年的3-5月舉行,而區域預賽一般安排在上一年的9-12月舉行。原則上一個大學在一站區域預賽最多可以有3支隊伍,但只能有一支隊伍參加全球總決賽。
入圍世界總決賽名額(WFSlots)分為參與名額(ParticipationSlots)、獎牌名額(MedalBonusSlots)和其他紅利名額(OtherBonusSlots)三類。其中參與名額是從ICPC總部分配給各大洲區的參與名額(ParticipationSlots)中,由各大洲洲區主席確定並分配給洲子賽區的部分,其中各預賽區第一名自動獲得參加全球總決賽的資格;獎牌名額是ICPC總部根據上一年度總決賽結果直接分配給獲得獎牌的特定學校的名額;其他紅利名額是各大洲區主席從ICPC總部爭取到的額外獎勵名額。
全球總決賽第一名將獲得獎盃一座。另外,成績靠前的參賽隊伍也將獲得金、銀和銅牌。而解題數在中等以下的隊伍會得到確認但不會進行排名。
歷屆冠軍
1977年以來歷年全球總決賽的冠軍:
年份 | 總決賽地點 | 冠軍大學 | 國家 |
---|---|---|---|
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年 | 東北師範大學 | 東北大學 | 中國科學技術大學 | 北京大學 | 華東理工大學 | 上海大學 |
2016年 | 中國石油大學(華東) |
世界總決賽
由上海交通大學承辦的第29屆ACM國際大學生程式設計競賽全球總決賽於2005年4月3-7日期間在上海浦東的香格里拉酒店舉行。總共有78支隊伍參加總決賽的角逐,它們是從來自6大洲71個國家1582所大學的4109支隊伍中通過之前的各級區域預賽中脫穎而出的。在當地時間4月6日上午舉行的全球總決賽上,東道主上海交通大學代表隊是所有參賽隊伍中唯一一支解出8道題目的隊伍,從而在時隔3年之後第二次奪得全球總冠軍。由哈爾濱工程大學承辦的第34屆ACM國際大學生程式設計競賽全球總決賽於2010年2月在哈爾濱舉行,上海交通大學再次奪冠。