全國大專電腦軟體設計競賽

一百年九十九年九十八年

縮寫:NCPC
對象:大學生
水準:★
時間:9~10月
主辦:教育部針對全國大專院校學生所舉辦的資訊能力競賽
承辦:由臺灣師範大學與中山大學輪流辦理

分為甲乙丙三組進行。甲組與乙組的競賽內容仿照ACM-ICPC,丙組則是軟體應用比賽,與程式競賽無關。

甲組成績優秀者,可由教育部全額贊助參加ACM-ICPC,某種程度上可視作ACM-ICPC的選手選拔賽。

ACM International Collegiate Programming Contest

2011-20122010-20112009-2010

縮寫:ACM-ICPC
對象:全世界大專院校學生(學士班一年級到碩士班一年級之學生)
水準:台灣賽區★。亞洲各賽區★~★★。總決賽★★★。
時間:台灣賽區11~12月。亞洲各賽區為8~12月。世界總決賽是隔年3~4月。
主辦:Association for Computing Machinery
承辦:台灣賽區由台灣大學院校輪流承辦

部分內容請參考「Online Judge System源起」。

資訊界規模最大、歷史最悠久的競賽,最近幾屆競賽皆有上千所學校、數萬名選手參加。

ACM-ICPC是一個氣氛相當活潑,非常具有特色的競賽。一場ACM-ICPC的賽事,由許多活動所組成,主軸當然是現場上機競賽,另外還有安排晚餐宴會、娛樂表演、城市遊覽等行程。整個賽程為期兩至三天,過程有吃有玩,遊樂的成分比競賽的成分還多,對於參賽選手來說是相當新鮮的體驗。活動細節請參考歷年的ACM-ICPC區域賽網站。

ACM-ICPC的競賽方式是三人一隊,並且要有一位同校教授作為領隊教練。教練的主要作用,是負責向大會接洽賽事行程,替選手打點賽事期間的生活細節,讓選手無後顧之憂,得以傾盡全力比賽,教練就如同經紀人的角色。另外,報名時可以額外登記一名後備隊員,發生緊急狀況時得替補上陣。

現場上機競賽的過程,是所有隊伍聚集於會場,一支隊伍分配一張桌子、三張椅子、一臺電腦、一份英文題本。開賽後所有隊伍同時開始作答,選手必須迅速調校好電腦環境,然後編寫程式解決問題,將程式碼上傳給裁判批改。

所有作答皆是即時批改,幾分鐘內回覆結果,結果只有對與錯兩大類,答錯還可以再答。成績的計算方式,是以答對題數作為主要的排名依據;但是作答的錯誤次數、上傳答案的時刻,統統列入扣分,最後作為次要的排名依據。因此選手除了要盡力答出問題,也要盡快答出問題,還要盡量避免答錯問題又一錯再錯。實力在伯仲之間的隊伍,勝負的差距往往取決於審題與答題的效率。動作慢人一步,或者大意發生失誤,就很可能名落千丈。

選手共有五小時時間,要解出十道左右的演算法問題,期間可以喝水、外出上廁所、享用大會提供的奢華點心、在題本上塗鴉、把題本拆了摺紙鶴、睡覺、談情說愛、玩電腦遊戲;唯一的限制,就是不得與隊伍之外的人交流。

比賽規則看似輕佻,但是事實上,五小時時間解十道左右的題目,電腦卻只有一臺,所以比賽過程是非常緊迫的,就算是技藝高超的選手,也幾乎無暇休息,必須分工合作、爭取時間。通常是一人隨時坐在電腦前作答,充分運用電腦,發揮時效;另外兩人則在旁解讀其餘題目,在腦中羅織解法,伺機輪換上陣。五小時的比賽過程,選手克服環境限制、調適心理壓力、發揮大腦潛能,也可以說是一場精神的對抗賽。

至於教練必須在會場外等待,不得與選手交談。不過教練們可以彼此交流,也可以觀戰和吃點心。現場上機競賽可以說是教練在整個賽程當中最輕鬆的時刻,也是辛苦之後驗收成果的時刻。

現場上機競賽還有許許多多的有趣的地方,此處只做初步介紹,詳細過程留給各位選手們自行體驗吧!

PC2

http://www.ecs.csus.edu/pc2/

PC2是一套軟體,以Java程式語言編寫,是ACM-ICPC現場上機競賽使用的平台。選手必須使用PC2上傳程式碼給裁判批改、接收批改結果、向裁判提問、看裁判回覆。裁判也是使用PC2批改程式、統計成績。另外PC2還有本機端測試、click me小遊戲等次要功能。

目前大部分的賽區使用PC2作為競賽平台,包括台灣賽區;僅有少數賽區使用其他平台。由此可知,想參加ACM-ICPC,最好先熟悉PC2的操作方式,比賽時候就不必浪費時間學習操作方式,也能減少因陌生帶來的緊張感。

PC2在官方網站就能下載。至於安裝方式,筆者已全然忘記,就不提了。

PC2並不穩定,容易發生系統崩潰(想必各位都有比賽中斷的經驗);PC2事前設定也非常費時,須安裝於每一台電腦,逐一設定網路,逐一設定帳號密碼,逐一設定測試資料。有鑑於此,ACM-ICPC逐漸改採網頁形式的DOMjudge。

DOMjudge

http://domjudge.sourceforge.net/

台灣一些小型的演算法競賽已經陸續採用DOMjudge,相信台灣賽區很快就會採用DOMjudge作為競賽平台。

比賽消息

ACM-ICPC亞洲區指導員:http://icpcasia.blogspot.com/
台灣ACM-ICPC協會:ACM-ICPC Contest Council for Taiwan
歷年比賽題目:ACM-ICPC Live Archive

相關報導

2002/5
Cheers雜誌: 寫程式不如賣香雞排?
http://www.cheers.com.tw/doc/print.jspx?id=402881e8134e403a01134e43e2bb0433

2002/5
Cheers雜誌: 台灣不能輸在起跑點上!
http://www.cheers.com.tw/doc/page.jspx?id=402881e8134e403a01134e43e3950434

2006/6
商業週刊: 台灣科技島美名,靠三個台大學生撐著
http://www.businessweekly.com.tw/webarticle.php?id=22775

2009/3
癮科技: 台大資工系ACM比賽團隊專訪
http://chinese.engadget.com/2009/03/16/interview-acm-contest-team-in-ntu/

2009/11
ACM-ICPC亞洲區指導員: 世程賽的啟示
http://blog.roodo.com/cjblog/archives/10868327.html

2010/2
中國時報: 「2010程式設計奧運」台大奪第3 上海交大第1 莫斯科州立大學第2
http://www.edtung.com/TopNews/NewsContent.aspx?type=8&no=975

Google Code Jam

http://code.google.com/codejam

對象:一般大眾
水準:★★★
時期:4月~7月
主辦:往年是由Google與TopCoder合作舉辦,2008年開始由Google自己主導。

這是近幾年才興起的演算法程式設計線上比賽。提供優勝者優渥的獎金,以及參訪公司的機會,以及免費午餐宴會。成績優異者也很有可能被挖掘進入Google公司工作唷!

TopCoder Open

http://community.topcoder.com/tco12/

對象:一般大眾
水準:★★★
時期:4月~8月
主辦:TopCoder

TopCoder一年一度的公開賽,比賽項目相當多元,其中一個項目是演算法競賽。TopCoder Open已經舉辦了好幾屆,是世界聞名的賽事。

Facebook Hacker Cup

http://www.facebook.com/hackercup

對象:一般大眾
水準:★★
時期:1月~2月
主辦:Facebook

2011年才興起的比賽,性質與Google Code Jam相同。取名為Hacker Cup恐怕只是為引人耳目,實際上與資訊安全完全無關。

Internet Problem Solving Contest

http://ipsc.ksp.sk/

對象:一般大眾
水準:★★
時期:5~6月

解決一些稀奇古怪問題的比賽。

全國高級中學資訊學科能力競賽

一百年九十九年九十八年九十七年九十六年九十五年

對象:高中學生
水準:★
時期:11~12月
主辦:教育部針對全國高中生所舉辦的資訊能力競賽
承辦:由清華大學與交通大學輪流辦理

首先會在各縣市、各區域舉辦初賽,成績優異者得參加全國總決賽。

以往的比賽內容是資訊學科的基本知識,加上基礎程式設計;但是近年來卻有演算法競賽化的趨勢。

網際網路程式設計全國大賽

http://contest.cc.ntu.edu.tw/npsc2011/

縮寫:NPSC
對象:高中學生、國中學生
水準:★★
時期:11~12月
主辦:國家科學委員會針對全國高中生所舉辦的演算法程式設計能力競賽
承辦:台灣大學

獎品相當豐厚的比賽。比賽題目亦相當有特色。網路上亦有專門的討論區「NPSC補完計劃」。