ACM国际大学生程序设计竞赛及练习题库
ACM國際大學生程序設計競賽
ACM國際大學生程序設計競賽(英文全稱:ACM International Collegiate Programming Contest(ACM-ICPC或ICPC)是由美國計算機協會(ACM)主辦的,一項旨在展示大學生創新能力、團隊精神和在壓力下編寫程序、分析和解決問題能力的年度競賽。經過近30多年的發展,ACM國際大學生程序設計競賽已經發展成為最具影響力的大學生計算機競賽。賽事目前由IBM公司贊助。
?
背景和歷史
競賽的歷史可以上溯到1970年,當時在美國德克薩斯A&M大學舉辦了首屆比賽。當時的主辦方是the Alpha Chapter of the UPE Computer Science Honor Society。作為一種全新的發現和培養計算機科學頂尖學生的方式,競賽很快得到美國和加拿大各大學的積極響應。1977年,在ACM計算機科學會議期間舉辦了首次總決賽,并演變成為目前的一年一屆的多國參與的國際性比賽,迄今已經舉辦了35屆。
最初幾屆比賽的參賽隊伍主要來自美國和加拿大,后來逐漸發展成為一項世界范圍內的競賽。特別是自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國際大學生程序設計競賽全球總決賽冠軍的亞洲高校。這也是目前為止亞洲大學在該競賽上取得的最好成績。賽事的競爭格局已經由最初的北美大學一枝獨秀演變成目前的亞歐對抗的局面。
簡要規則
ACM-ICPC以團隊的形式代表各學校參賽,每隊由3名隊員組成。每位隊員必須是在校學生,有一定的年齡限制,并且最多可以參加2次全球總決賽和5次區域選拔賽。
比賽期間,每隊使用1臺電腦需要在5個小時內使用C、C++、Pascal或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隊以總用時少而獲勝。
與其它計算機程序競賽(例如國際信息學奧林匹克,IOI)相比,ACM-ICPC的特點在于其題量大,每隊需要5小時內完成8道題目,甚至更多。另外一支隊伍3名隊員卻只有1臺電腦,使得時間顯得更為緊張。因此除了扎實的專業水平,良好的團隊協作和心理素質同樣是獲勝的關鍵。
競賽流程
大賽現場
1.參賽隊伍最多由三名參賽隊員組成。
2.競賽中至少命題6題,至多命題10題,試題描述為英文,比賽時間為5個小時。
3.競賽可以使用的語言:C++、C、Java和Pascal。但final賽只有C/C++;
4.重點考察選手的算法和程序設計能力,不考察任何Windows編程知識;
5.選手可攜帶任何非電子類資料,包括書籍和打印出來的程序等;
6.評委負責將結果(正確或出錯的類型)通過網絡盡快返回給選手,除此之外不提供任何額外幫助;
返回結果:
1.Accepted. ---通過!(AC)
2.Wrong Anwser. ---答案錯。(WA)
3.RunTime Error. ---程序運行出錯,意外終止等。(RTE)
4.Time Limit Exceeded. ---超時。程序沒在規定時間內出答案。(TLE)
5.Presentation Error. ---格式錯。程序沒按規定的格式輸出答案。(PE)
6.Memory Limit Exceeded. ---超內存。程序沒在規定空間內出答案。(MLE)
7.Compile Error. ---編譯錯。程序編譯不過。(CE)
區域和全球決賽
賽事由各大洲區域預賽和全球總決賽兩個階段組成。各預賽區第一名自動獲得參加全球總決賽的資格。決賽安排在每年的3-4月舉行,而區域預賽一般安排在上一年的9-12月舉行。一個大學可以有多支隊伍參加區域預賽,但只能有一支隊伍參加全球總決賽。
全球總決賽第一名將獲得獎杯一座。另外,成績靠前的參賽隊伍也將獲得金、銀和銅牌。而解題數在中等以下的隊伍會得到確認但不會進行排名。
形式與評分辦法
競賽進行5個小時,一般有6—8道試題,由同隊的三名選手使用同一臺計算機協作完成。當解決了一道試題之后,將其提交給評委,由評委判斷其是否正確。若提交的程序運行不正確,則該程序將被退回給參賽隊,參賽隊可以進行修改后再一次提交該問題。程序運行不正確是指出現以下4種情況之一:
(1)運行出錯(run-timeerror);
(2)運行超時〔time-limitexceeded);
(3)運行結果錯誤(wronganswer);
(4)運行結果輸出格式錯誤(presentationerror)。
(5)運行內存溢出( Memory Limit Exceeded);
競賽結束后,參賽各隊以解出問題的多少進行排名,若解出問題數相同,按照總用時的長短排名。總用時為每個解決了的問題所用時間之和。一個解決了的問題所用的時間是競賽開始到提交被接受的時間加上該問題的罰時(每次提交通不過,罰時20分鐘)。沒有解決的問題不記時。美國英語為競賽的工作語言。競賽的所有書面材料(包括試題)將用美國英語寫出,區域競賽中可以使用其它語言。總決賽可以使用的程序設計語言包括pascal,c,c++及java,也可以使用其它語言。具體的操作系統及語言版本各年有所不同。
獎勵情況
總決賽前十名的隊伍將得到高額獎學金:第一名獎金為12000美元,第二名獎金為6000美元,第三名獎金為3000美元,第四名至第十名將各得到l500美元。除此之外還將承認北美冠軍、歐洲冠軍、南太平洋冠軍及亞洲冠軍。
腦力之爭
頭腦風暴
競賽規定每支參賽隊伍由三名在校大學生組成,他們需要在規定的五個小時內解決八個或更多的復雜實際編程問題。每隊使用一臺電腦,參賽者爭分奪秒,與其他參賽隊伍拼比邏輯、策略和心理素質。
團隊成員將在多名專家裁判的嚴格督察下通力合作,對問題進行難度分級、推斷出要求、設計測試平臺并構建軟件系統,最終成功地解決問題。對于一名精通計算機科學的學生而言,有些問題只是精確度的問題;而有些則需要學生了解并掌握高級算法;還有一些問題是普通學生無法解決的,不過對于那些最優秀的學生而言,這一切都不在話下。
競賽的評判過程十分嚴格。我們分發給學生的是問題陳述,而不是要求須知。他們會收到一個測試數據實例,但無法獲得裁判的測試數據和接受標準方面的信息。若每次提交的解決方案出現錯誤,就會受到加時懲罰。畢竟,在處理頂級計算問題時,誰也不想浪費客戶的時間。在最短的累計時間內,提交次數最少、解決問題最多的隊伍就是最后的勝利者。
IBM的承諾
在IBM所開展的眾多學術活動中,贊助ACM-ICPC賽事占有十分重要的位置。此舉旨在促進開放源代碼編程技巧的發展,培養更具競爭力的IT工作人員,從而推動全球創新和經濟增長。
關于ACM
ACM(美國計算機協會)是一家科教性質的協會,旨在聯合全球計算機領域的教學人員、研究人員和從業人員,開展行業交流活動、共享資源和解決業界難題。憑借絕對的領導地位,ACM始終致力于推行最高行業標準,表彰杰出技術人才,加強計算機行業的整體隊伍建設。ACM通過為成員提供終生學習、職業發展及與專業人士聯誼的機會,支持其在各自的專業領域取得長足進步。
ICPC2008簡介
IBM的承諾
第32屆ACM國際大學生程序設計競賽(ICPC)又名“腦力之爭”(BattleoftheBrains),其舉辦宗旨是為大學生提供一個集中的展示舞臺,表現他們在五個小時的指定時間內解決實際電腦編程問題的超強能力。
2007年9月-12月全球已經有來自83個國家1,821所大學的6,700支參賽隊伍參加了預賽(分213個賽場舉行),預賽結束后僅有100支參賽隊伍闖入全球總決賽。全球總決賽將于2008年4月6日-10日在位于加拿大阿爾伯塔省的班夫溫泉城堡飯店舉行。
這一年度盛事由下列幾級比賽組成:
本地競賽——各大學挑選參賽隊伍,或在本校范圍內舉辦比賽選拔一支或幾支隊伍代表學校參加下一級比賽。選拔范圍為全球30多萬名計算機專業的學生。
區域預賽(2007年9月-12月)——今年的參賽隊伍增加了10%(其中不包括參加初賽的隊伍),從去年的6,099支增加到了6,700支。這些隊伍代表來自六大洲83個國家的1,821所大學。
全球總決賽(2008年4月6日-10日,加拿大阿爾伯塔省的班夫溫泉城堡飯店)——為慶祝阿爾伯塔大學成立一百周年,一百(100)支決賽隊伍將代表六大洲的頂級大學參賽,角逐獎品、獎金和展示權。
ICPC2011簡介
第36屆ACM國際大學生程序設計競賽中國大陸共有5個賽區,分別為大連賽區(大連理工大學承辦)、上海賽區(復旦大學承辦)、北京賽區(北京郵電大學承辦)、成都賽區(成都東軟學院承辦)和福州賽區(福建師范大學承辦)。
截至目前,大連、上海、北京、成都的網絡預選賽已經結束;大連賽區區域賽也于9月25日在大連落下帷幕。大連賽區共有來自一百多所院校的155支隊伍參加角逐,比賽中獲得冠軍的為上海交通大學的“史詩”隊,獲得金銀銅牌的院校、隊伍如下:
| 學校排名 | 學校名稱 | 隊伍排名 | 隊伍名 |
| 1 | 上海交通大學 | 1 | 史詩 (team29) |
| 2 | 清華大學 | 2 | DivineRapier (team4) |
| * | 清華大學 | 3 | machinator (team88) |
| 3 | 中山大學 | 4 | SYSU_Metalgarurumon (team94) |
| 4 | 復旦大學 | 5 | FDU_BGM (team5) |
| 5 | 浙江工業大學 | 6 | 小和山職業技術學院 (team33) |
| 6 | 電子科技大學 | 7 | 成電-宙斯 (team18) |
| 7 | 北京大學 | 8 | 巴斯特 (team14) |
| ? | 北京大學 | 9 | 若爆了 (team27) |
| 8 | 國防科技大學 | 10 | 阿蕾泡菜 (team52) |
| ? | 北京大學 | 11 | 麗華 (team106) |
| ? | 北京大學 | 12 | OSU (team48) |
| 9 | 武漢大學 | 13 | 旅途 (team25) |
| ? | 電子科技大學 | 14 | 成電-阿波羅 (team57) |
| ? | 中山大學 | 15 | SYSU_HolyAngemon (team11) |
| ? | 中山大學 | 16 | SYSU_AtlurKabuterimon (team51) |
| ? | 復旦大學 | 17 | FDU_Sanguosha (team43) |
| ? | 北京大學 | 18 | OSU安格瑞扣得死 (team121) |
| 10 | 北京航空航天大學 | 19 | 北航-1 (team16) |
?
acm練習題庫:
http://www.programfan.com/acm/
http://acm.nyist.net/JudgeOnline/problemset.php
http://acm.hdu.edu.cn/
總結
以上是生活随笔為你收集整理的ACM国际大学生程序设计竞赛及练习题库的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: FastFDS原理
- 下一篇: mkv怎么转mp4,mkv转mp4方法