最負盛名的程式設計競賽你都知道嗎?
程式設計競賽有著各種各樣的形式,在此,我們來介紹其中最負盛名的幾個。
世界規模的大賽——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國際大學生程式設計競賽全球總決賽冠軍,媒體稱他為“世界最聰明的人”。(見下圖)
巫澤俊平時訓練的實驗室
巫澤俊
面向中學生的資訊學奧林匹克競賽——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一樣定期舉辦比賽,又同其他網站一樣不斷維護歷屆題庫。
關於本書
《挑戰程式設計競賽(第2版)》分為準備篇、初級篇、中級篇與高階篇4章。作者結合自己豐富的參賽經驗,對嚴格篩選的110 多道各類試題進行了由易及難的細緻講解,每章後附有習題。 通過本書不僅可以學到演算法,更能學到其設計和運用的思想。
只要是具有程式設計基礎知識的讀者,均適合閱讀本書。書中的原始碼均用C++實現,不過只用到了其基本功能,所以即便讀者不熟悉C++也不影響閱讀。
本書的第一版被臺灣和韓國引進,獲得了一致的好評,讓我們看看其他兩版的封面風格:)
預售:
【噹噹】http://product.dangdang.com/product.aspx?product_id=23272528
相關文章
- 好程式設計師大資料技術盤點 你都知道嗎程式設計師大資料
- Go 泛型的這 3 個核心設計,你都知道嗎?Go泛型
- 消除遊戲美術設計的這些套路,你都知道嗎?遊戲
- Java程式設計師必須瞭解的7個效能指標,你都知道嗎?Java程式設計師指標
- 遊戲影視美術設計也有套路,這些你都知道嗎?遊戲
- iOS這些小技巧你都知道嗎iOS
- 你知道Python設計模式的原則嗎?Python設計模式
- Python 五個有趣的彩蛋,你都知道嗎?Python
- 80%的前端程式設計師都遇到的問題,你中招了嗎?前端程式設計師
- 你說你懂計算機網路,那這些你都知道嗎計算機網路
- 每個Java程式設計師都必須知道的四種負載均衡演算法Java程式設計師負載演算法
- 2024端午鋁紫程式設計競賽程式設計
- 分享5款有趣的軟體,你都知道嗎?
- 這些操作刪除console.log程式碼,你都知道嗎
- 你知道年薪百萬的程式設計師是如何對時間管理嗎?程式設計師
- 程式設計師都應該知道的URI,一文幫你全面瞭解程式設計師
- 2024國慶鋁紫程式設計競賽程式設計
- 程式設計競賽中讀檔案技能程式設計
- Python主要涉及哪些領域?你都知道嗎?Python
- 收藏!這些 IDE 使用技巧,你都知道嗎IDE
- 單例模式的七種寫法,你都知道嗎?單例模式
- 蘋果mac隱藏的神技能,你都知道嗎蘋果Mac
- Chrome DevTools中的這些騷操作,你都知道嗎?Chromedev
- 每個Python新手都應該知道的程式設計技巧Python程式設計
- [譯文] 當你開始學習程式設計時,你最希望知道什麼?程式設計
- 你知道python程式設計環境需要具備,哪些優秀的功能嗎?Python程式設計
- 程式設計競賽中 C/C++ I/O 的使用程式設計C++
- 紹興市大學生程式設計競賽程式設計
- 這幾個好用的Python開源框架,你都知道嗎?Python框架
- 關於Python學習的方法以及技巧,你都知道嗎?Python
- 程式設計師最核心的競爭力是什麼?程式設計師
- 關於Linux系統,這些你都知道嗎?Linux
- 萬能的python程式設計,這五大應用領域你知道嗎?Python程式設計
- Linux程式間通訊有幾種方式?這8個你都知道嗎?Linux
- 學習python最離不開的庫,你都知道哪個?Python
- 中國最牛的SEO公司你知道是哪家嗎
- 程式設計師最應該知道的一些事程式設計師
- 羨慕程式設計師的高薪?你會讓你的孩子當程式設計師嗎?程式設計師高薪
- 30歲的程式設計師,你慌了嗎?程式設計師