TopCoder
TopCoder
http://www.topcoder.com/
這個網站是現下最流行的程式相關網站。網站功能眾多,其中有一個部分是競賽,競賽的其中一個部分是演算法競賽。在這裡舉行的演算法競賽十分多,平均每個禮拜就有一次比賽, Google Code Jam 剛開始也是在這裡舉行的。在這裡舉行的演算法競賽也有很多類型,最常舉辦的比賽類型就是 Single Round Match ,簡稱 SRM ,至今已舉辦過 450+ 場,是最簡易的競賽類型,其他還有馬拉松競賽、多回合競賽等等。某些大型比賽是有獎金的,例行賽的出題者也有獎金,因而吸引很多網民在 TopCoder 出沒。
比賽說明
http://www.topcoder.com/wiki/display/tc/Algorithm
大致上分為三個階段:第一個階段是程式解題,自己寫好解答程式碼,自己測試後沒問題就可以上傳,等候批改;第二個階段是找別人程式碼的漏洞,自己擬好測試資料去測別人寫的程式碼,測出漏洞後自己可得到分數、別人會降低分數,但是實施測試卻測不出漏洞,自己就會被扣分;第三個階段是由系統幫大家批改程式碼,並且統計分數。
通常比賽題目會有兩套,分別叫做 DIV1 和 DIV2 ,積分比較高的使用者會以 DIV1 進行比賽,積分比較低的使用者則以 DIV2 進行比賽,想當然 DIV1 的題目比 DIV2 的題目難得多了。兩套題目分別都是三題,但是三題的難度是不同的,有不同的給分,解出難題則會得到比較高的分數。比賽結束後會依該場比賽的答題情況以及排名名次,重新計算個人的積分。大家平時在練習時,可以直接做 DIV1 分數最高的題目,沒必要做分數低的題目,如此學習效果較好。
演算法競賽的部分,可以從 TopCoder 網站左邊的選單中找到,路徑是 Competition 下面的 Algorithm 。第一個選項 Launch Arena 是打開 TopCoder 用於演算法線上競賽的一套軟體,這套軟體叫做 Arena ,是一支 Java 程式。 Arena 跑起來之後,以個人的帳號密碼登入,就會出現一個介面,在上面可以直接參加比賽,也可以瀏覽過去的比賽題庫,也可以進行解題練習,就跟一般的 Online Judge 提供的功能差不多。另外 Arena 還有聊天系統,還有一些個人環境設定等等的功能。
Arena 還有一套寫程式的介面,使用者也可以直接在 Arena 上面編寫程式、執行程式、設計測試資料並測試程式。比較麻煩的一點是,解答程式碼必須包裝成 class 的形式,程式進入點的 member function 需按照題目規定來撰寫,系統才有辦法幫你批改和測試。也因此有很多人幫 Arena 寫了外掛,自動幫你處理這些繁瑣的問題,讓這個寫程式的介面更好用。
第二個選項 Statistics ,有很多關於比賽的資訊,第一個選項 Match Archive 會列出亙古迄今舉行過的演算法競賽,另外有一個 Promblem Arcive 則是列出亙古迄今的所有比賽題目。另外還有一個重要的選項是 Match Editorial ,可以觀看賽後講評,大部分的比賽都會提供詳細的解法以及解答程式碼,是個很好的學習教材。
這裡僅做些拋磚引玉,詳細情形大家可以自行去了解一下。
Project Euler
Project Euler
http://projecteuler.net/
這個網站專門提供能用程式計算出答案的數學問題。每個問題都有固定一個答案,自己撰寫程式計算出解答後,只要在題目下方的表單中將答案輸入進去、上傳答案,就可以看到解題結果了。
回到首頁
Online Judge System
USACO
TopCoder
Project Euler
沒有留言:
張貼留言