ACM国际大学生程序设计竞赛
ACM國(guó)際大學(xué)生程序設(shè)計(jì)競(jìng)賽(英文全稱:ACM International Collegiate Programming Contest(簡(jiǎn)稱ACM-ICPC或ICPC))是由國(guó)際計(jì)算機(jī)協(xié)會(huì)(ACM)主辦的,一項(xiàng)旨在展示大學(xué)生創(chuàng)新能力、團(tuán)隊(duì)精神和在壓力下編寫(xiě)程序、分析和解決問(wèn)題能力的年度競(jìng)賽。經(jīng)過(guò)近40年的發(fā)展,ACM國(guó)際大學(xué)生程序設(shè)計(jì)競(jìng)賽已經(jīng)發(fā)展成為全球最具影響力的大學(xué)生程序設(shè)計(jì)競(jìng)賽。賽事目前由方正集團(tuán)贊助。
歷史背景
ACM國(guó)際大學(xué)生程序設(shè)計(jì)競(jìng)賽的歷史可以上溯到1970年,當(dāng)時(shí)在美國(guó)德克薩斯A&M大學(xué)舉辦了首屆比賽。當(dāng)時(shí)的主辦方是the Alpha Chapter of the UPE Computer Science Honor Society。作為一種全新的發(fā)現(xiàn)和培養(yǎng)計(jì)算機(jī)科學(xué)頂尖學(xué)生的方式,競(jìng)賽很快得到美國(guó)和加拿大各大學(xué)的積極響應(yīng)。1977年,在ACM計(jì)算機(jī)科學(xué)會(huì)議期間舉辦了首次總決賽,并演變成為一年一屆的多國(guó)參與的國(guó)際性比賽。
最初幾屆比賽的參賽隊(duì)伍主要來(lái)自美國(guó)和加拿大,后來(lái)逐漸發(fā)展成為一項(xiàng)世界范圍內(nèi)的競(jìng)賽。特別是自1997年IBM開(kāi)始贊助賽事之后,賽事規(guī)模增長(zhǎng)迅速。1997年,總共有來(lái)自560所大學(xué)的840支隊(duì)伍參加比賽。而到了2004年,這一數(shù)字迅速增加到840所大學(xué)的4109支隊(duì)伍并以每年10-20%的速度在增長(zhǎng)。
1980年代,ACM將競(jìng)賽的總部設(shè)在位于美國(guó)德克薩斯州的貝勒大學(xué)。
在賽事的早期,冠軍多為美國(guó)和加拿大的大學(xué)獲得。而進(jìn)入1990年代后期以來(lái),俄羅斯和其它一些東歐國(guó)家的大學(xué)連奪數(shù)次冠軍。來(lái)自中國(guó)大陸的上海交通大學(xué)代表隊(duì)則在2002年美國(guó)夏威夷的第26屆、2005年上海的第29屆和2010在哈爾濱的第34屆的全球總決賽上三奪冠軍,浙江大學(xué)參賽隊(duì)在美國(guó)當(dāng)?shù)貢r(shí)間2011年5月30下午2時(shí)結(jié)束的第35屆ACM國(guó)際大學(xué)生程序設(shè)計(jì)競(jìng)賽全球總決賽榮獲全球總冠軍,成為除上海交通大學(xué)之外唯一獲得ACM國(guó)際大學(xué)生程序設(shè)計(jì)競(jìng)賽全球總決賽冠軍的亞洲高校。這也是目前為止亞洲大學(xué)在該競(jìng)賽上取得的最好成績(jī)。賽事的競(jìng)爭(zhēng)格局已經(jīng)由最初的北美大學(xué)一枝獨(dú)秀演變成當(dāng)前的亞歐對(duì)抗局面。
2015年
全球總決賽,圣彼得堡國(guó)立資訊科技、機(jī)械與光學(xué)大學(xué)AC了所有題目(13道),成為了ACM-ICPC歷史上第一支在全球總決賽中AK的隊(duì)伍,也成為了歷史上獲得ACM-ICPC全球總決賽冠軍次數(shù)最多(6次)的隊(duì)伍,這一表現(xiàn),被當(dāng)場(chǎng)比賽主持人稱作the best of best of best。?[2]?
2018年4月,ACM-ICPC在中國(guó)北京舉行,由北京大學(xué)承辦,最終北京大學(xué)最后時(shí)候完成G題奪得金牌。
簡(jiǎn)要規(guī)則
ACM-ICPC以團(tuán)隊(duì)的形式代表各學(xué)校參賽,每隊(duì)由至多3名隊(duì)員組成。每位隊(duì)員必須是在校學(xué)生,有一定的年齡限制,并且每年最多可以參加2站區(qū)域選拔賽。
比賽期間,每隊(duì)使用1臺(tái)電腦需要在5個(gè)小時(shí)內(nèi)使用C/C++、Java和Python中的一種編寫(xiě)程序解決7到13個(gè)問(wèn)題。程序完成之后提交裁判運(yùn)行,運(yùn)行的結(jié)果會(huì)判定為正確或錯(cuò)誤兩種并及時(shí)通知參賽隊(duì)。而且有趣的是每隊(duì)在正確完成一題后,組織者將在其位置上升起一只代表該題顏色的氣球,每道題目第一支解決掉它的隊(duì)還會(huì)額外獲得一個(gè)“FIRST PROBLEM SOLVED”的氣球。
最后的獲勝者為正確解答題目最多且總用時(shí)最少的隊(duì)伍。每道試題用時(shí)將從競(jìng)賽開(kāi)始到試題解答被判定為正確為止,其間每一次提交運(yùn)行結(jié)果被判錯(cuò)誤的話將被加罰20分鐘時(shí)間,未正確解答的試題不記時(shí)。
與其它計(jì)算機(jī)程序競(jìng)賽(例如國(guó)際信息學(xué)奧林匹克,IOI)相比,ACM-ICPC的特點(diǎn)在于其題量大,每隊(duì)需要在5小時(shí)內(nèi)完成7道或以上的題目。另外,一支隊(duì)伍3名隊(duì)員卻只有1臺(tái)電腦,使得時(shí)間顯得更為緊張。因此除了扎實(shí)的專業(yè)水平,良好的團(tuán)隊(duì)協(xié)作和心理素質(zhì)同樣是獲勝的關(guān)鍵。
競(jìng)賽特點(diǎn)
1.參賽隊(duì)伍最多由三名參賽隊(duì)員組成。
2.競(jìng)賽中命題10題左右,試題描述為英文,比賽時(shí)間為5個(gè)小時(shí),前四個(gè)小時(shí)可以實(shí)時(shí)看到排名,最后一小時(shí)封榜,無(wú)法看到排名。
3.競(jìng)賽可以使用的語(yǔ)言:Java, C, C++, Kotlin 和?Python。
4.重點(diǎn)考察選手的算法和程序設(shè)計(jì)能力,不考察實(shí)際工程中常用的系統(tǒng)編程,多線程編程等等;
5.選手可攜帶任何非電子類資料,包括書(shū)籍和打印出來(lái)的程序等,部分賽區(qū)會(huì)對(duì)選手?jǐn)y帶的紙質(zhì)資料做限制。
6.評(píng)委負(fù)責(zé)將結(jié)果(正確或出錯(cuò)的類型)通過(guò)網(wǎng)絡(luò)盡快返回給選手,除此之外不提供任何額外幫助;
7.每個(gè)題目對(duì)應(yīng)一種顏色的氣球,通過(guò)該題目的隊(duì)伍會(huì)得到對(duì)應(yīng)顏色氣球。每道題目第一支解決掉它的隊(duì)還會(huì)額外獲得一個(gè)“FIRST PROBLEM SOLVED”的氣球。
賽事構(gòu)成
。決賽安排在每年的3-5月舉行,而區(qū)域預(yù)賽一般安排在上一年的9-12月舉行。原則上一個(gè)大學(xué)在一站區(qū)域預(yù)賽最多可以有3支隊(duì)伍,但只能有一支隊(duì)伍參加全球總決賽。
入圍世界總決賽名額(WF Slots)分為參與名額(Participation Slots)、獎(jiǎng)牌名額(Medal Bonus Slots)和其他紅利名額(Other Bonus Slots)三類。其中參與名額是從ICPC總部分配給各大洲區(qū)的參與名額(ParticipationSlots)中,由各大洲洲區(qū)主席確定并分配給洲子賽區(qū)的部分,其中各預(yù)賽區(qū)第一名自動(dòng)獲得參加全球總決賽的資格;獎(jiǎng)牌名額是ICPC總部根據(jù)上一年度總決賽結(jié)果直接分配給獲得獎(jiǎng)牌的特定學(xué)校的名額;其他紅利名額是各大洲區(qū)主席從ICPC總部爭(zhēng)取到的額外獎(jiǎng)勵(lì)名額。
全球總決賽第一名將獲得獎(jiǎng)杯一座。另外,成績(jī)靠前的參賽隊(duì)伍也將獲得金、銀和銅牌。而解題數(shù)在中等以下的隊(duì)伍會(huì)得到確認(rèn)但不會(huì)進(jìn)行排名。
評(píng)分標(biāo)準(zhǔn)
競(jìng)賽進(jìn)行5個(gè)小時(shí),一般有7道或以上試題,由同隊(duì)的三名選手使用同一臺(tái)計(jì)算機(jī)協(xié)作完成。當(dāng)解決了一道試題之后,將其提交給評(píng)委,由評(píng)委判斷其是否正確。若提交的程序運(yùn)行不正確,則該程序?qū)⒈煌嘶亟o參賽隊(duì),參賽隊(duì)可以進(jìn)行修改后再一次提交該問(wèn)題。程序判定結(jié)果有如下7種:
1、Accepted. ——通過(guò)!(AC)
2、Wrong Answer.——答案錯(cuò)。(WA)
3、Runtime Error.——程序運(yùn)行出錯(cuò),意外終止等。(RE)
4、Time Limit Exceeded. ——超時(shí)。程序沒(méi)在規(guī)定時(shí)間內(nèi)出答案。(TLE)
5、Presentation Error. ——格式錯(cuò)。程序沒(méi)按規(guī)定的格式輸出答案。(PE)
6、Memory Limit Exceeded. ——超內(nèi)存。程序沒(méi)在規(guī)定空間內(nèi)出答案。(MLE)
7、Compile Error. ——編譯錯(cuò)。程序編譯不過(guò)。(CE)
競(jìng)賽結(jié)束后,參賽各隊(duì)以解出問(wèn)題的多少進(jìn)行排名,若解出問(wèn)題數(shù)相同,按照總用時(shí)的長(zhǎng)短排名。總用時(shí)為每個(gè)解決了的問(wèn)題所用時(shí)間之和。一個(gè)解決了的問(wèn)題所用的時(shí)間是競(jìng)賽開(kāi)始到提交被接受的時(shí)間加上該問(wèn)題的罰時(shí)(每次提交通不過(guò),罰時(shí)20分鐘)。沒(méi)有解決的問(wèn)題不記時(shí)。例如:A、B兩隊(duì)都正確完成兩道題目,其中A隊(duì)提交這兩題的時(shí)間分別是比賽開(kāi)始后1:00和2:45,B隊(duì)為1:20和2:00,但B隊(duì)有一題提交了2次。這樣A隊(duì)的總用時(shí)為1:00+2:45=3:45而B(niǎo)隊(duì)為1:20+2:00+0:20=3:40,所以B隊(duì)以總用時(shí)少而獲勝。美國(guó)英語(yǔ)為競(jìng)賽的工作語(yǔ)言。競(jìng)賽的所有書(shū)面材料(包括試題)將用美國(guó)英語(yǔ)寫(xiě)出,區(qū)域競(jìng)賽中可以使用其它語(yǔ)言。總決賽可以使用的程序設(shè)計(jì)語(yǔ)言包括pascal,c,c++及java,也可以使用其它語(yǔ)言。具體的操作系統(tǒng)及語(yǔ)言版本各年有所不同。
獎(jiǎng)勵(lì)情況
區(qū)域賽一般分別按10%,20%,30%的比例頒發(fā)金,銀,銅獎(jiǎng),即一般情況(120隊(duì)伍)有12支隊(duì)伍獲金牌,24支隊(duì)伍獲銀牌,36支隊(duì)伍獲銅牌,其余為優(yōu)勝獎(jiǎng)。
2010年亞洲區(qū)域賽中國(guó)大陸5大賽區(qū)由阿里巴巴公司贊助,獲得金牌的選手可以享受綠色通道,進(jìn)入阿里巴巴實(shí)習(xí)或參加工作。
2012年亞洲區(qū)域賽中國(guó)大陸5大賽區(qū)由華為公司贊助,有獎(jiǎng)金(冠5000、亞3000、季2000,非冠亞季的金牌1200,FB(First Blood,指全場(chǎng)第一個(gè)解答出某道題) 800,最佳女隊(duì)800,頑強(qiáng)拼搏500)。頑強(qiáng)拼搏是全場(chǎng)最后一個(gè)AC,且只AC1道題的隊(duì)伍。
總決賽前十名的隊(duì)伍將得到高額獎(jiǎng)學(xué)金:第一名獎(jiǎng)金為12000美元,第二名獎(jiǎng)金為6000美元,第三名獎(jiǎng)金為3000美元,第四名至第十名將各得到1500美元。除此之外還將承認(rèn)北美冠軍、歐洲冠軍、南太平洋冠軍及亞洲冠軍。
賽事意義
競(jìng)賽規(guī)定每支參賽隊(duì)伍至多由三名在校大學(xué)生組成,他們需要在規(guī)定的五個(gè)小時(shí)內(nèi)解決八個(gè)或更多的復(fù)雜實(shí)際編程問(wèn)題。每隊(duì)使用一臺(tái)電腦,參賽者爭(zhēng)分奪秒,與其他參賽隊(duì)伍拼比邏輯、策略和心理素質(zhì)。
團(tuán)隊(duì)成員將在多名專家裁判的嚴(yán)格督察下通力合作,對(duì)問(wèn)題進(jìn)行難度分級(jí)、推斷出要求、設(shè)計(jì)測(cè)試平臺(tái)并構(gòu)建軟件系統(tǒng),最終成功地解決問(wèn)題。對(duì)于一名精通計(jì)算機(jī)科學(xué)的學(xué)生而言,有些問(wèn)題只是精確度的問(wèn)題;而有些則需要學(xué)生了解并掌握高級(jí)算法;還有一些問(wèn)題是普通學(xué)生無(wú)法解決的,不過(guò)對(duì)于那些最優(yōu)秀的學(xué)生而言,這一切都不在話下。
競(jìng)賽的評(píng)判過(guò)程十分嚴(yán)格。我們分發(fā)給學(xué)生的是問(wèn)題陳述,而不是要求須知。他們會(huì)收到一個(gè)測(cè)試數(shù)據(jù)實(shí)例,但無(wú)法獲得裁判的測(cè)試數(shù)據(jù)和接受標(biāo)準(zhǔn)方面的信息。若每次提交的解決方案出現(xiàn)錯(cuò)誤,就會(huì)受到加時(shí)懲罰。畢竟,在處理頂級(jí)計(jì)算問(wèn)題時(shí),誰(shuí)也不想浪費(fèi)客戶的時(shí)間。在最短的累計(jì)時(shí)間內(nèi),提交次數(shù)最少、解決問(wèn)題最多的隊(duì)伍就是最后的勝利者。
在IBM開(kāi)展的眾多學(xué)術(shù)活動(dòng)中,贊助ACM-ICPC賽事占有十分重要的位置。此舉旨在促進(jìn)開(kāi)放源代碼編程技巧的發(fā)展,培養(yǎng)更具競(jìng)爭(zhēng)力的IT工作人員,從而推動(dòng)全球創(chuàng)新和經(jīng)濟(jì)增長(zhǎng)。
ACM-ICPC大賽是一項(xiàng)旨在展示大學(xué)生創(chuàng)新能力、團(tuán)隊(duì)精神和在壓力下編寫(xiě)程序、分析和解決問(wèn)題能力的年度競(jìng)賽。
總結(jié)
以上是生活随笔為你收集整理的ACM国际大学生程序设计竞赛的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 牛客练习赛48
- 下一篇: 北京信息科技大学第十一届程序设计竞赛