發展歷史
競賽的歷史可以上溯到1970年,當時在美國德克薩斯A&M大學舉辦了首屆比賽。當時的主辦方是theAlphaChapteroftheUPEComputerScienceHonorSociety。作為一種全新的發現和培養計算機科學頂尖學生的方式,競賽很快得到美國和加拿大各大學的積極回響。1977年,在ACM計算機科學會議期間舉辦了首次總決賽,並演變成為目前的一年一屆的多國參與的國際性比賽。迄今已經舉辦了37屆。最初幾屆比賽的參賽隊伍主要來自美國和加拿大,後來逐漸發展成為一項世界範圍內的競賽。特別是自1997年IBM開始贊助賽事之後,賽事規模增長迅速。1997年,總共有來自560所大學的840支隊伍參加比賽。而到了2004年,這一數字迅速增加到840所大學的4109支隊伍並以每年10-20%的速度在增長。
1980年,ACM將競賽的總部設在位於美國德克薩斯州的貝勒大學。
在賽事的早期,冠軍多為美國和加拿大的大學獲得。而進入1990年代後期以來,俄羅斯和其它一些東歐國家的大學連奪數次冠軍。來自中國大陸的上海交通大學代表隊則在2002年美國夏威夷的第26屆和2005年上海的第29屆,2010年哈爾濱的34屆全球總決賽上三奪冠軍。這也是目前為止亞洲大學在該競賽上取得的最好成績。來自中國大陸的浙江大學代表隊在2011年在美國佛羅里達州的奧蘭多的35屆全球總決賽上奪冠。賽事的競爭格局已經由最初的北美大學一枝獨秀演變成目前的亞歐對抗的局面。
ACM-ICPC以團隊的形式代表各學校參賽,每隊由3名隊員組成。每位隊員必須是在校學生,有一定的年齡限制,並且最多可以參加2次全球總決賽和5次區域選拔賽。
比賽期間,每隊使用1台電腦需要在5個小時內使用C、C++或Java中的一種編寫程式解決7到10個問題。程式完成之後提交裁判運行,運行的結果會判定為正確或錯誤兩種並及時通知參賽隊。而且有趣的是每隊在正確完成一題後,組織者將在其位置上升起一隻代表該題顏色的氣球。
最後的獲勝者為正確解答題目最多且總用時最少的隊伍。每道試題用時將從競賽開始到試題解答被判定為正確為止,其間每一次提交運行結果被判錯誤的話將被加罰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隊以總用時少而獲勝。
競賽流程
1.參賽隊伍最多由三名參賽隊員組成。2.競賽中一般命題10題左右,試題描述為英文,比賽時間為5個小時,前四個小時可以看到實時排名,最後一小時封榜,無法看到排名。
3.競賽可以使用的語言:C++、C、Java和Pascal。但final賽只有C/C++;
4.重點考察選手的算法和程式設計能力,不考察任何Windows編程知識;
5.選手可攜帶任何非電子類資料,包括書籍和列印出來的程式等,部分賽區會對攜帶的資料進行限制;
6.評審負責將結果(正確或出錯的類型)通過網路儘快返回給選手,除此之外不提供任何額外幫助;
返回結果:
1.Accepted.---通過!(AC)
2.WrongAnwser.---答案錯。(WA)
3.RunTimeError.---程式運行出錯,意外終止等。(RTE)
4.TimeLimitExceeded.---逾時。程式沒在規定時間內出答案。(TLE)
5.PresentationError.---格式錯。程式沒按規定的格式輸出答案。(PE)
6.MemoryLimitExceeded.---超記憶體。程式沒在規定空間內出答案。(MLE)
7.CompileError.---編譯錯。程式編譯不過。(CE)
決賽情況
賽事由各大洲區域預賽和全球總決賽兩個階段組成。各預賽區第一名自動獲得參加全球總決賽的資格。決賽安排在每年的3-4月舉行,而區域預賽一般安排在上一年的9-12月舉行。一個大學可以有多支隊伍參加區域預賽,但只能有一支隊伍參加全球總決賽。全球總決賽第一名將獲得獎盃一座。另外,成績靠前的參賽隊伍也將獲得金、銀和銅牌。而解題數在中等以下的隊伍會得到確認但不會進行排名。
評分辦法
競賽進行5個小時,一般有6—8道試題,由同隊的三名選手使用同一台計算機協作完成。當解決了一道試題之後,將其提交給評審,由評審判斷其是否正確。若提交的程式運行不正確,則該程式將被退回給參賽隊,參賽隊可以進行修改後再一次提交該問題。競賽結束後,參賽各隊以解出問題的多少進行排名,若解出問題數相同,按照總用時的長短排名。總用時為每個解決了的問題所用時間之和。一個解決了的問題所用的時間是競賽開始到提交被接受的時間加上該問題的罰時(每次提交通不過,罰時20分鐘)。沒有解決的問題不記時。美國英語為競賽的工作語言。競賽的所有書面材料(包括試題)將用美國英語寫出,區域競賽中可以使用其它語言。總決賽可以使用的程式設計語言包括pascal,c,c++及java,也可以使用其它語言。具體的作業系統及語言版本各年有所不同。
獎勵情況
區域賽一般分別按10%,20%,30%的比例頒發金,銀,銅獎,即一般情況(120隊伍)有12支隊伍獲金牌,24支隊伍獲銀牌,36支隊伍獲銅牌,其餘為優勝獎。2010年亞洲區域賽中國大陸5大賽區由阿里巴巴公司贊助,獲得金牌的選手可以享受綠色通道,進入阿里巴巴實習或參加工作。
2012年亞洲區域賽中國大陸5大賽區由華為公司贊助,有獎金(冠5000、亞3000、季2000,非冠亞季的金牌1200,FB(FirstBlood,指全場第一個解答出某道題)800,最佳女隊800,頑強拼搏500)。頑強拼搏是全場最後一個AC,且只AC1道題的隊伍。
總決賽前十名的隊伍將得到高額獎學金:第一名獎金為12000美元,第二名獎金為6000美元,第三名獎金為3000美元,第四名至第十名將各得到l500美元。除此之外還將承認北美冠軍、歐洲冠軍、南太平洋冠軍及亞洲冠軍