ACM/ICPC 國際大學生程式設計競賽
ACM 國際大學生程式設計競賽 (ACM/ICPC 或 ICPC) 是由美國計算機協會 (ACM) 主辦的,一項旨在展示大學生創新能力、團隊精神和在壓力下編寫程式、分析和解決問題能力的年度競賽。經過近 30 多年的發展,ACM 國際大學生程式設計競賽已經發展成為最具影響力的大學生計算機競賽。賽事目前由 IBM 公司贊助。
歷史
競賽的歷史可以上溯到 1970 年,當時在美國德克薩斯 A&M 大學舉辦了首屆比賽。當時的主辦方是 the Alpha Chapter of the UPE Computer Science Honor Society。作為一種全新的發現和培養計算機科學頂尖學生的方式,競賽很快得到美國和加拿大各大學的積極回響。1977 年,在 ACM 計算機科學會議期間舉辦了首次總決賽,並演變成為目前的一年一屆的多國參與的國際性比賽。迄今已經舉辦了 31 屆。
最初幾屆比賽的參賽隊伍主要來自美國和加拿大,後來逐漸發展成為一項世界範圍內的競賽。特別是自 1997 年 IBM 開始贊助賽事之後,賽事規模增長迅速。1997 年,總共有來自 560 所大學的 840 支隊伍參加比賽。而到了 2004 年,這一數字迅速增加到 840 所大學的 4109 支隊伍並以每年 10-20% 的速度在增長。
1980年代,ACM 將競賽的總部設在位於美國德克薩斯州的貝勒大學。
在賽事的早期,冠軍多為美國和加拿大的大學獲得。而進入 1990 年代後期以來, 俄羅斯和其它一些東歐國家的大學連奪數次冠軍。來自中國大陸的上海交通大學代表隊則在 2002 年美國夏威夷第 26 屆和 2005 年上海舉行的第 29 屆全球總決賽上兩奪冠軍。這也是目前為止亞洲大學在該競賽上取得的最好成績。賽事的競爭格局已經由最初的北美大學一枝獨秀演變成目前的亞歐對抗的局面。
簡要規則
ACM/ICPC 以團隊的形式代表各學校參賽,每隊由 3 名隊員組成。每位隊員必須是入校 5 年內的在校學生,最多可以參加 2 次全球總決賽和 5 次區域選拔賽。
比賽期間,每隊使用 1 台電腦需要在 5 個小時內使用 C、C++、Pascal 或 Java 中的一種編寫程式解決 6 至 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 台電腦,使得時間顯得更為緊張。因此除了紮實的專業水平,良好的團隊協作和心理素質同樣是獲勝的關鍵。
賽事由各大洲區域預賽和全球總決賽兩個階段組成。各預賽區第一名自動獲得參加全球總決賽的資格。決賽安排在每年的 3-4 月舉行,而區域預賽一般安排在上一年的 9-12 月舉行。一個大學可以有多支隊伍參加區域預賽,但只能有一支隊伍參加全球總決賽。
全球總決賽第一名將獲得獎盃一座。另外,成績靠前的參賽隊伍也將獲得金、銀和銅牌。而解題數在中等以下的隊伍會得到確認但不會進行排名。