ACM國際大學生程序設計競賽

國際計算機協會主辦的賽事

ACM國際大學生程序設計競賽(英文全稱:ACM International Collegiate Programming Contest(簡稱ACM-ICPC或ICPC))是由國際計算機協會(ACM)主辦的,一項旨在展示大學生創新能力、團隊精神和在壓力下編寫程序、分析和解決問題能力的年度競賽。經過近40年的發展,ACM國際大學生程序設計競賽已經發展成為全球最具影響力的大學生程序設計競賽。賽事目前由方正集團贊助。

賽事歷史


歷史背景

ACM國際大學生程序設計競賽
ACM國際大學生程序設計競賽
ACM國際大學生程序設計競賽的歷史可以上溯到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年5月30下午2時結束的第35屆ACM國際大學生程序設計競賽全球總決賽榮獲全球總冠軍,成為除上海交通大學之外唯一獲得ACM國際大學生程序設計競賽全球總決賽冠軍的亞洲高校。這也是目前為止亞洲大學在該競賽上取得的最好成績。賽事的競爭格局已經由最初的北美大學一枝獨秀演變成當前的亞歐對抗局面。
2015年ACM-ICPC全球總決賽開幕式現場
2015年ACM-ICPC全球總決賽開幕式現場
2015年 全球總決賽,聖彼得堡國立資訊科技、機械與光學大學AC了所有題目(13道),成為了ACM-ICPC歷史上第一支在全球總決賽中AK的隊伍,也成為了歷史上獲得ACM-ICPC全球總決賽冠軍次數最多(6次)的隊伍,這一表現,被當場比賽主持人稱作the best of best of best。
2018年4月,ACM-ICPC在中國北京舉行,由北京大學承辦,最終北京大學最後時候完成G題奪得金牌。

賽事意義

競賽規定每支參賽隊伍至多由三名在校大學生組成,他們需要在規定的五個小時內解決八個或更多的複雜實際編程問題。每隊使用一台電腦,參賽者爭分奪秒,與其他參賽隊伍拼比邏輯、策略和心理素質。
團隊成員將在多名專家裁判的嚴格督察下通力合作,對問題進行難度分級、推斷出要求、設計測試平台並構建軟體系統,最終成功地解決問題。對於一名精通計算機科學的學生而言,有些問題只是精確度的問題;而有些則需要學生了解並掌握高級演演算法;還有一些問題是普通學生無法解決的,不過對於那些最優秀的學生而言,這一切都不在話下。
競賽的評判過程十分嚴格。我們分發給學生的是問題陳述,而不是要求須知。他們會收到一個測試數據實例,但無法獲得裁判的測試數據和接受標準方面的信息。若每次提交的解決方案出現錯誤,就會受到加時懲罰。畢竟,在處理頂級計算問題時,誰也不想浪費客戶的時間。在最短的累計時間內,提交次數最少、解決問題最多的隊伍就是最後的勝利者。
在IBM開展的眾多學術活動中,贊助ACM-ICPC賽事佔有十分重要的位置。此舉旨在促進開放源代碼編程技巧的發展,培養更具競爭力的IT工作人員,從而推動全球創新和經濟增長。
ACM-ICPC大賽是一項旨在展示大學生創新能力、團隊精神和在壓力下編寫程序、分析和解決問題能力的年度競賽。

ACM簡介

IBM的承諾
IBM的承諾
ACM(國際計算機學會)是一家科教性質的協會,旨在聯合全球計算 機領域的教學人員、研究人員和從業人員,開展行業交流活動、共享資源和解決業界難題。憑藉絕對的領導地位,ACM始終致力於推行最高行業標準,表彰傑出技術人才,加強計算機行業的整體隊伍建設。ACM通過為成員提供終生學習、職業發展及與專業人士聯誼的機會,支持其在各自的專業領域取得長足進步。

中國賽區

亞洲區預選賽
ACM國家大學生競賽自1996年起設立中國大陸地區預選賽賽區,並由上海大學承辦,至2001年總決賽止,連續舉辦五屆。之後在境內設置多個賽點,由各大學輪流主辦地區性競賽至今。
歷年中國大陸舉辦區域賽地點:
年份
1996年上海大學
1997年上海大學
1998年上海大學
1999年上海大學
2000年上海大學
2001年上海大學
2002年清華大學西安交通大學
2003年清華大學中山大學
2004年上海交通大學北京大學
2005年四川大學北京大學浙江大學
2006年上海大學清華大學西安電子科技大學
2007年西華大學南京航空航天大學北京航空航天大學吉林大學
2008年中國科學技術大學(特別賽區)北京交通大學哈爾濱工程大學杭州電子科技大學西南民族大學
2009年浙江大學寧波理工學院中國科學技術大學東華大學哈爾濱工業大學武漢大學
2010年哈爾濱工程大學天津大學四川大學浙江理工大學福州大學
2011年大連理工大學復旦大學北京郵電大學成都東軟學院福建師範大學
2012年東北師範大學天津理工大學浙江師範大學浙江理工大學成都東軟學院
2013年吉林大學南京理工大學浙江工業大學電子科技大學湖南大學
2014年牡丹江師範學院遼寧科技大學西北工業大學華南理工大學北京師範大學上海大學
2015年東北師範大學東北大學中國科學技術大學北京大學華東理工大學上海大學(特別賽區) 
世界總決賽
由上海交通大學承辦的第29屆ACM國際大學生程序設計競賽全球總決賽於2005年4月3-7日期間在上海浦東香格里拉酒店舉行。總共有78支隊伍參加總決賽的角逐,它們是從來自6大洲71個國家1582所大學的4109支隊伍中通過之前的各級區域預賽中脫穎而出的。在當地時間4月6日上午舉行的全球總決賽上,東道主上海交通大學代表隊是所有參賽隊伍中唯一一支解出8道題目的隊伍,從而在時隔3年之後第二次奪得全球總冠軍。
哈爾濱工程大學承辦的第34屆ACM國際大學生程序設計競賽全球總決賽於2010年2月在哈爾濱舉行,上海交通大學再次奪冠。
2018年3月26日,方正集團贊助北京大學ACM-ICPC(國際大學生程序設計競賽)全球總決賽捐贈儀式在北京大學舉行。方正集團、北京大學信息科學技術學院與北京大學教育基金會簽署了捐贈協議,北京大學副校長王仰麟向方正集團頒發了“北京大學傑出教育貢獻獎”。
2018年,北京大學將迎來120周年校慶。作為校慶活動之一,北京大學將舉辦第42屆國際大學生程序設計競賽全球總決賽,以此推動計算機教育在中國的普及,激發更多學生學習計算機的熱情,為國家人工智慧戰略培養和輸送更優質的後備人才。今年,和北京大學有著深厚淵源的方正集團首次作為全球鑽石贊助商參與這項國際賽事。方正集團成為全球鑽石贊助商,使得賽事的承辦工作有了堅實的保障。

賽事規則


簡要規則

ACM-ICPC以團隊的形式代表各學校參賽,每隊由至多3名隊員組成。每位隊員必須是在校學生,有一定的年齡限制,並且每年最多可以參加2站區域選拔賽。
特殊榮譽氣球
特殊榮譽氣球
比賽期間,每隊使用1台電腦需要在5個小時內使用C/C++、Java和Python中的一種編寫程序解決7到13個問題。程序完成之後提交裁判運行,運行的結果會判定為正確或錯誤兩種並及時通知參賽隊。而且有趣的是每隊在正確完成一題后,組織者將在其位置上升起一隻代表該題顏色的氣球,每道題目第一支解決掉它的隊還會額外獲得一個“FIRST PROBLEM SOLVED”的氣球。
最後的獲勝者為正確解答題目最多且總用時最少的隊伍。每道試題用時將從競賽開始到試題解答被判定為正確為止,其間每一次提交運行結果被判錯誤的話將被加罰20分鐘時間,未正確解答的試題不記時。
與其它計算機程序競賽(例如國際信息學奧林匹克,IOI)相比,ACM-ICPC的特點在於其題量大,每隊需要在5小時內完成7道或以上的題目。另外,一支隊伍3名隊員卻只有1台電腦,使得時間顯得更為緊張。因此除了紮實的專業水平,良好的團隊協作和心理素質同樣是獲勝的關鍵。

競賽特點

大賽現場
大賽現場
1.參賽隊伍最多由三名參賽隊員組成。
2.競賽中命題10題左右,試題描述為英文,比賽時間為5個小時,前四個小時可以實時看到排名,最後一小時封榜,無法看到排名。
3.競賽可以使用的語言:Java, C, C++, Kotlin 和 Python。
4.重點考察選手的演演算法和程序設計能力,不考察實際工程中常用的系統編程,多線程編程等等;
5.選手可攜帶任何非電子類資料,包括書籍和列印出來的程序等,部分賽區會對選手攜帶的紙質資料做限制。
6.評委負責將結果(正確或出錯的類型)通過網路儘快返回給選手,除此之外不提供任何額外幫助;
7.每個題目對應一種顏色的氣球,通過該題目的隊伍會得到對應顏色氣球。每道題目第一支解決掉它的隊還會額外獲得一個“FIRST PROBLEM SOLVED”的氣球。

賽事構成

北京交通大學隊和ICPC主席Bill Poucher合影
北京交通大學隊和ICPC主席Bill Poucher合影
賽事由各大洲區域預賽和全球總決賽兩個階段組成。決賽安排在每年的3-5月舉行,而區域預賽一般安排在上一年的9-12月舉行。原則上一個大學在一站區域預賽最多可以有3支隊伍,但只能有一支隊伍參加全球總決賽。
入圍世界總決賽名額(WF Slots)分為參與名額(Participation Slots)、獎牌名額(Medal Bonus Slots)和其他紅利名額(Other Bonus Slots)三類。其中參與名額是從ICPC總部分配給各大洲區的參與名額(ParticipationSlots)中,由各大洲洲區主席確定並分配給洲子賽區的部分,其中各預賽區第一名自動獲得參加全球總決賽的資格;獎牌名額是ICPC總部根據上一年度總決賽結果直接分配給獲得獎牌的特定學校的名額;其他紅利名額是各大洲區主席從ICPC總部爭取到的額外獎勵名額。
全球總決賽第一名將獲得獎盃一座。另外,成績靠前的參賽隊伍也將獲得金、銀和銅牌。而解題數在中等以下的隊伍會得到確認但不會進行排名。

評分標準

競賽進行5個小時,一般有7道或以上試題,由同隊的三名選手使用同一台計算機協作完成。當解決了一道試題之後,將其提交給評委,由評委判斷其是否正確。若提交的程序運行不正確,則該程序將被退回給參賽隊,參賽隊可以進行修改後再一次提交該問題。程序判定結果有如下7種:
中國選手賽照
中國選手賽照
1、Accepted. ——通過!(AC)
2、Wrong Answer.——答案錯。(WA)
3、Runtime Error.——程序運行出錯,意外終止等。(RE)
4、Time Limit Exceeded. ——超時。程序沒在規定時間內出答案。(TLE)
5、Presentation Error. ——格式錯。程序沒按規定的格式輸出答案。(PE)
6、Memory Limit Exceeded. ——超內存。程序沒在規定空間內出答案。(MLE)
7、Compile Error. ——編譯錯。程序編譯不過。(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隊以總用時少而獲勝。美國英語為競賽的工作語言。競賽的所有書面材料(包括試題)將用美國英語寫出,區域競賽中可以使用其它語言。總決賽可以使用的程序設計語言包括pascal,c,c++及java,也可以使用其它語言。具體的操作系統及語言版本各年有所不同。

獎勵情況

區域賽一般分別按10%,20%,30%的比例頒發金,銀,銅獎,即一般情況(120隊伍)有12支隊伍獲金牌,24支隊伍獲銀牌,36支隊伍獲銅牌,其餘為優勝獎
2010年亞洲區域賽中國大陸5大賽區由阿里巴巴公司贊助,獲得金牌的選手可以享受綠色通道,進入阿里巴巴實習或參加工作。
2012年亞洲區域賽中國大陸5大賽區由華為公司贊助,有獎金(冠5000、亞3000、季2000,非冠亞季的金牌1200,FB(First Blood,指全場第一個解答出某道題) 800,最佳女隊800,頑強拼搏500)。頑強拼搏是全場最後一個AC,且只AC1道題的隊伍。
總決賽前十名的隊伍將得到高額獎學金:第一名獎金為12000美元,第二名獎金為6000美元,第三名獎金為3000美元,第四名至第十名將各得到1500美元。除此之外還將承認北美冠軍、歐洲冠軍、南太平洋冠軍及亞洲冠軍。

賽事獎項


歷屆冠軍

1977年以來歷年全球總決賽的冠軍:
年份總決賽地點冠軍大學國家
2018年中國北京莫斯科國立大學俄羅斯
2017年美國南達科他州聖彼得堡國立信息技術、機械與光學大學俄羅斯
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年美國亞特蘭大密歇根州立大學美國