最負盛名的程式設計競賽你都知道嗎?

出版圈郭志敏發表於2013-06-18

程式設計競賽有著各種各樣的形式,在此,我們來介紹其中最負盛名的幾個。

世界規模的大賽——Google Code Jam(GCJ)

它是Google公司幾乎每年都會舉辦的世界規模的程式設計競賽,參賽者要在2~3小時內解決大約4道題。一旦從線上(Online)進行的幾輪預選中勝出,就能夠參加現場(Onsite)總決賽。該賽事的特點是,每道題都備有Small和Large兩組輸入資料。即便是難度係數較大的問題,只要輸入規模足夠小,依然可以簡單地求解,這一形式深受廣大參賽者的喜歡。另外,GCJ並不在伺服器上自動執行程式,而是要求將原始碼和本地執行的結果一同提交。

向高排名看齊!——TopCoder

TopCoder公司是一家策劃並舉辦程式設計競賽的公司,它舉辦的比賽涉及多個領域。其中之一就是演算法(Algorithm)比賽,該賽事大致每週都以SRM(Single Round Match)的形式舉辦一場,其具有以下特點。

(1) 在1小時15分鐘的短時間內挑戰3道題。

(2) 提交的結果在比賽結束前是不知道的,整個過程中稍有失誤,就會變成0分。

(3) 在編碼階段(coding phase)結束後,還有一個挑戰階段(challege phase)。該階段可以查詢別人程式碼中的漏洞。如果能夠提供一組輸入資料,使別人的程式返回錯誤的結果,就能得到額外的分數。

其中第3條是該賽事獨一無二的特點 ,也是閱讀別人程式碼的好機會。TopCoder還有一個深受大家喜歡的等級分系統(rating system),它會依據SRM的結果給參賽選手排名。另外,TopCoder還會舉辦一年一度的TCO(TopCoder Open)公開賽。一旦從線上進行的幾輪預選中勝出,就能夠參加在拉斯維加斯 舉辦的總決賽。

歷史最悠久的競賽——ACM-ICPC

ACM-ICPC是由美國計算機協會(ACM)主辦的、面向大學生的競賽,也是歷史最悠久的程式設計競賽。這是一個三人一隊的團隊比賽,選手要在5個小時內解決大約10道題。因為比賽中三名選手共用一臺電腦,題量又比其他賽事多,並且多是一些實現複雜的問題,所以團隊配合顯得異常重要。想要從日本參加該項賽事,首先要參加線上進行的國內預選賽,勝出後才能參加亞洲區域賽,取得前幾名的好成績後才能夠參加世界總決賽。

講到ACM-ICPC,不得不提到我們的《挑戰程式設計競賽》(第2版)譯者,這顆閃耀在程式設計競賽中的明星巫澤俊,就在2011年的5月30下午2時,他獲得了第35屆ACM國際大學生程式設計競賽全球總決賽冠軍,媒體稱他為“世界最聰明的人”。(見下圖)

enter image description here

enter image description here

巫澤俊平時訓練的實驗室

enter image description here

巫澤俊

面向中學生的資訊學奧林匹克競賽——JOI-IOI

資訊學奧林匹克競賽是學科奧林匹克競賽的一種,是以初中生和高中生為參賽物件的程式設計競賽。在日本,首先要參加日本資訊學奧林匹克競賽,取得優異成績後,才能作為日本國家隊選手參加國際資訊學奧林匹克競賽。 其他比賽都需要儘可能快地解決儘可能多的問題,而資訊學奧林匹克競賽只要在規定時間內求解問題即可,成績與所用時間無關,但是它相對其他比賽而言,求解每道題所花的時間要長得多。雖然是面向中學生的比賽,每年所出問題的難度卻是非常高的。

通過網路自動評測——Online Judge(OJ)

在網際網路上,有一些被稱為Online Judge的系統,它們能夠自動評測以往程式設計競賽中的題目。利用該系統就可以練習了。另外,其中一些Online Judge也會定期舉辦自己的比賽,不妨去參加一下。在此列舉幾個有名的Online Judge。

  • PKU Online Judge (POJ)——http://poj.org/ 題庫中有大量的題目。
  • 會津大學Online Judge(AOJ)——http://judge.u-aizu.ac.jp/onlinejudge/ 還包含日語題。
  • Sphere Online Judge(SPOJ)——http://www.spoj.pl/ 允許使用各種各樣的程式語言。
  • SGU Online Contester——http://acm.sgu.ru/ 具有模擬參加歷史比賽的虛擬賽功能。
  • UVa Online Judge——http://uva.onlinejudge.org/ 老字號Online Judge,經常舉辦比賽。
  • Codecorces——http://codeforces.com/ 與TopCoder一樣定期舉辦比賽,又同其他網站一樣不斷維護歷屆題庫。

關於本書

enter image description here

《挑戰程式設計競賽(第2版)》分為準備篇、初級篇、中級篇與高階篇4章。作者結合自己豐富的參賽經驗,對嚴格篩選的110 多道各類試題進行了由易及難的細緻講解,每章後附有習題。 通過本書不僅可以學到演算法,更能學到其設計和運用的思想。

只要是具有程式設計基礎知識的讀者,均適合閱讀本書。書中的原始碼均用C++實現,不過只用到了其基本功能,所以即便讀者不熟悉C++也不影響閱讀。

本書的第一版被臺灣和韓國引進,獲得了一致的好評,讓我們看看其他兩版的封面風格:)

enter image description here

enter image description here

預售:

【噹噹】http://product.dangdang.com/product.aspx?product_id=23272528

相關文章