國際大學生程式設計競賽
國際大學生程式設計競賽(英語: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競賽網站(頁面存檔備份,存於網際網路檔案館)
- 杭州電子科技大學的線上裁判系統(頁面存檔備份,存於網際網路檔案館)
- 北京大學的線上裁判系統(頁面存檔備份,存於網際網路檔案館)