曆史
競賽的曆史可以上溯到1970年,當時在美國德克薩斯A&M大學舉辦了首屆比賽。當時的主辦方是theAlphaChapteroftheUPEComputerScienceHonorSociety。作為一種全新的發現和培養計算機科學頂尖學生的方式,競賽很快得到美國和加拿大各大學的積極響應。1977年,在ACM計算機科學會議期間舉辦了首次總決賽,并演變成為目前的一年一屆的多國參與的國際性比賽。迄今已經舉辦了29屆。
最初幾屆比賽的參賽隊伍主要來自美國和加拿大,後來逐漸發展成為一項世界範圍内的競賽。特别是自1997年IBM開始贊助賽事之後,賽事規模增長迅速。1997年,總共有來自560所大學的840支隊伍參加比賽。而到了2004年,這一數字迅速增加到840所大學的4109支隊伍并以每年10-20%的速度在增長。
1980年代,ACM将競賽的總部設在位于美國德克薩斯州的貝勒大學。
在賽事的早期,冠軍多為美國和加拿大的大學獲得。而進入1990年代後期以來,俄羅斯和其它一些東歐國家的大學連奪數次冠軍。來自中國大陸的上海交通大學代表隊則在2002年美國夏威夷第26屆和2005年上海舉行的第29屆全球總決賽上兩奪冠軍。這也是目前為止亞洲大學在該競賽上取得的最好成績。賽事的競争格局已經由最初的北美大學一枝獨秀演變成目前的亞歐對抗的局面。
評分辦法
競賽進行5個小時,一般有6—8道試題,由同隊的三名選手使用同一台計算機協作完成。當解決了一道試題之後,将其提交給評委,由評委判斷其是否正确。若提交的程序運行不正确,則該程序将被退回給參賽隊,參賽隊可以進行修改後再一次提交該問題。程序運行不正确是指出現以下5種情況之一:
(1)運行出錯(run-timeerror);
(2)運行超時〔time-limitexceeded);
(3)運行結果錯誤(wronganswer);
(4)運行結果輸出格式錯誤(presentationerror)。
(5)運行内存溢出( Memory Limit Exceeded);
競賽結束後,參賽各隊以解出問題的多少進行排名,若解出問題數相同,按照總用時的長短排名。總用時為每個解決了的問題所用時間之和。一個解決了的問題所用的時間是競賽開始到提交被接受的時間加上該問題的罰時(每次提交通不過,罰時20分鐘)。沒有解決的問題不記時。美國英語為競賽的工作語言。競賽的所有書面材料(包括試題)将用美國英語寫出,區域競賽中可以使用其它語言。總決賽可以使用的程序設計語言包括pascal,c,c++及java,也可以使用其它語言。具體的操作系統及語言版本各年有所不同。
簡要規則
ACM/ICPC以團隊的形式代表各學校參賽,每隊由3名隊員組成。每位隊員必須是入校5年内的在校學生,最多可以參加2次全球總決賽和4次區域選拔賽。
比賽期間,每隊使用1台電腦需要在5個小時内使用C、C++、Pascal或Java中的一種編寫程序解決8或10個問題(通常是區域選拔賽8題,全球總決賽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隊以總用時少而獲勝。
與其它計算機程序競賽(例如國際信息學奧林匹克,IOI)相比,ACM/ICPC的特點在于其題量大,每隊需要5小時内完成8道題目,甚至更多。另外一支隊伍3名隊員卻隻有1台電腦,使得時間顯得更為緊張。因此除了紮實的專業水平,良好的團隊協作和心理素質同樣是獲勝的關鍵。
比賽目的
比賽參賽隊員必須在5小時内編完程序并進行測試和調試。此種大賽對參賽學生的邏輯分析能力、策略制定和腦力方面具有極大的挑戰性。大賽提倡在壓力較大的情況下,培養學生的創造力、團隊合作精神以解決競賽的問題,從而挑選和發掘世界上最優秀的程序設計人才。
決賽介紹
賽事由各大洲區域預賽和全球總決賽兩個階段組成。各預賽區第一名自動獲得參加全球總決賽的資格。決賽安排在每年的3-4月舉行,而區域預賽一般安排在上一年的9-12月舉行。一個大學可以有多支隊伍參加區域預賽,但隻能有一支隊伍參加全球總決賽。
全球總決賽第一名将獲得獎杯一座。另外,成績靠前的參賽隊伍也将獲得金、銀和銅牌。而解題數在中等以下的隊伍會得到确認但不會進行排名。
中國競賽情況
亞洲區預選賽
ACM國家大學生競賽自1996年起設立中國大陸地區預選賽賽區,并由上海大學承辦,至2001年總決賽止,連續舉辦五屆。之後在境内設置多個賽點,由各大學輪流主辦地區性競賽至今。
曆年中國大陸舉辦區域賽地點:
世界總決賽
由上海交通大學承辦的第29屆ACM國際大學生程序設計競賽全球總決賽于2005年4月3-7日期間在上海浦東的香格裡拉酒店舉行。總共有78支隊伍參加總決賽的角逐,它們是從來自6大洲71個國家1582所大學的4109支隊伍中通過之前的各級區域預賽中脫穎而出的。在當地時間4月6日上午舉行的全球總決賽上,東道主上海交通大學代表隊是所有參賽隊伍中唯一一支解出8道題目的隊伍,從而在時隔3年之後第二次奪得全球總冠軍。
由哈爾濱工程大學承辦的第34屆ACM國際大學生程序設計競賽全球總決賽于2010年2月在哈爾濱舉行,上海交通大學再次奪冠。