1、ACM國際大學電腦程式設計競賽ACM International Collegiate Programming Contest(ACM-ICPC),ACM-ICPC,國際大學院校之年度程式設計競賽總部設於Baylor University,由電腦協會(Association for Computing Machinery, ACM) 及IBM公司贊助,ICPC宗旨:Battle of the Brains,促進國際各大學學生之間的交流。提供學生一個機會,在有限的時間之內,藉由解決精心設計的複雜難題,以鍛鍊和展現其本身解決問題、程式設計,以及團隊合作的能力。為學術界、產業界發掘下一代的資訊人才,
2、讓參賽者有快速晉身的管道。,歷史,前身為1970年在美國德克薩斯A&M大學舉辦的比賽。當時的主辦方是the Alpha Chapter of the UPE Computer Science Honor Society。此後,演變成為多國參與的國際性比賽,在1977年由ACM舉辦首次總決賽。自1997年IBM開始贊助賽事之後,賽事規模增長迅速。,Contest Rule,ICPC 共分兩個階段:區域賽 (Regional Contest)世界賽 (World Final)區域賽表現優異的隊伍可以晉級世界賽,角逐世界冠軍的榮耀。每年區域賽的日期大約是九月至十二月,世界賽則是在三月至四月舉行。,C
3、ontest Rule,以團隊的形式代表各學校參賽,每隊由3名隊員組成。每位隊員必須是大學在校學生(受大學教育五年內),最多可以參加2次全球總決賽和4次區域選拔賽。每隊使用1部電腦在5個小時內使用C、C+、Java或Pascal程式語言解決8到10個問題,由解出題數最多且使用時間最少的隊伍獲勝。,Contest Rule,程式以最後一次提交且被判定為正確的時間為提交時間。每一次的錯誤判定將使程式的提交間增加20分鐘penalty。,Contest Rule,參賽者將完成的程式碼線上繳交給裁判裁決,裁判以以手中的測試資料為基準,判定程式為 accepted (接受) 或 wrong answer
4、 (錯誤),程式可以重複提交直到被判定為接受為止。錯誤訊息:AcceptedAccepted (P.E.)Wrong AnswerTime Limit Exceededetc,Error Messages,Accepted 就是你的程式的輸出資料是正確的,也就是你成功的解出這問題Aceepted (P.E.) (Presentation Error)這是算是Accepted,就是你的輸出資料正確,但格式上有點小誤差 (多了一些空白行,或是空格之類的)Wrong Answer你的程式成功的執行結束,但輸出的資料沒有完全正確Time Limit Exceeded (TL)大部份 Judge 所限的
5、時間是十秒,也就是你的程式在十秒後還沒執行結束Memory Limit Exceeded (ML) 記憶體的使用量超過系統限制Output Limit Exceeded (OL):輸出的資料太大,超過限制,Error Messages,Compile Error (CE)編譯錯誤系統是使用Linux架的,所以C/C+的編譯器當然就是gcc啦Submission Error (SE)題號,使用者ID,使用語言沒填好,系統無法得知相關資訊Runtime Error(SIGSEGV)程式編譯正確,但執行時發生錯誤,通常是記憶體使用錯誤,像程式中除以0,或是用到不可用的記憶體(比如存取超過範圍的陣列元
6、素)Restricted Function (RF)你的程式有使用到系統限制的函式(如開啟檔案),或system (.),Contest Rule,範例:A、B兩隊都正確完成兩道題目A隊於比賽開始後1:00和2:45提交兩題A隊的總用時為1:00+2:45=3:45B隊於比賽開始後1:20和2:00提交兩題,但B隊有一題提交了2次(錯誤一次)。B隊總用時為1:20+2:00+0:20=3:40B隊以總用時少而獲勝。,台灣地區比賽,由全國大專電腦軟體設計競賽參賽隊伍中,擇優推薦甲組六至八隊報名參加 ACM 亞洲區台灣賽區大學電腦程式設計競賽,角逐台灣地區 ACM 國際大學電腦程式設計競賽之決賽權
7、,但各校不得超過兩隊。大專程式設計競賽之隊伍如取得 ACM 亞洲區台灣賽區大學電腦程式設計競賽之決賽權,成績最優之二隊可向教育部申請補助參賽費用。,台灣地區比賽,第31 屆ACM 國際大學電腦程式設計競賽亞洲高雄賽區(2006 Annual ACM International Collegiate Programming ContestAsia Kaohsiung Contest Site國中山大學主辦競賽活動日期2006 11 月17 日(週五)至11 月18 日(週),2007 Final,The 31st ACM International Collegiate Programming
8、Contest World Finals March 12-16, 2007 - Hilton Tokyo Bay,Tips,多透過Online Judge練習作題目Universidad de Valladolid Online Judge Ural State University Online Judge Tianjin University Online Judge Saratov State University Online Judge Sphere Online Judge ACM-ICPC Live Archive Around the World MIPT Online Ju
9、dge Peking University Online Judge Zhejiang University Online Judge Harbin Institute of Technology Online Judge Fuzhou University Online Judge Online Problems Solving System,Tips,熟悉比賽作業系統:台灣區競賽使用的作業系統為 GNU/Linux SUSE Enterprise for desktop 10 World Final使用的作業系統為Fedora Core 4 Linux 熟悉比賽使用語言及發展工具環境:台灣
10、區競賽使用的語言為 GNU C/C+ ;程式發展工具: Eclipse World Final使用的語言為 Java (version 1.5)、C/C+ (GCC 4.0)、 Pascal ;程式發展工具: Java - Eclipse 3.1、C/C+ - CDT 3.0 under Eclipse 3.1、Pascal - Borland Kylix Version 3.0 熟悉比賽使用裁判程式:PC2 (Programming Contest Control System),Tips,培養團隊默契:相互了解彼此的長處與短處定好分工方式立定得分策略:先分工瀏覽全部試題,挑出有把握的題目,
11、集中全力解決之若手邊仍有一些可能解出的題目,則可以儘早放棄履遇挫折的題目。帶齊資料:參賽者可攜帶書籍、手冊、紙本的程式碼。但不可攜帶機器可讀寫的任何軟體或資料,亦不可攜帶自己的電腦、終端機、計算機、電子字典或PDA,並嚴禁使用行動電話及呼叫器,以免干擾其他隊伍作答。 記得帶一本好用的字典,Tips,多準備(寫好)常用的函式或多使用C+ Standard Template LibraryE.G.#include stack S;queue Q;priority_queue PQ;stack - S.push(), S.top(), S.pop(), S.empty()You should alw
12、ays top on pop because top returns but does not remove the element on top, while pop removes but does not return the element.Linked implementations ensure the stack will never be full.queue Q.front(), Q.back(), Q.push(), Q.pop(), and Q.empty()hash_map H.erase(), H.find(), H.insert()priority_queue PQ.push(), PQ.top(), PQ.pop(), PQ.empty()set S.set_union, S.set_intersectionsort or stable_sort,Good Luck!,