【轉】TopCoder 規則入門


基本規則

TopCoder的比賽類型很多,最常見的是周賽SRM(Single Round Match),另外還有TCHS SRM(TopCoder High School SRM,題目和SRM一樣,僅限中學生參加,參賽者水平較低,據說漲rating很容易),馬拉松(Marathon Matchs),還有TCOpen(每年兩次的大比賽)之類的比賽。因爲大多數人都在做SRM,所以本文介紹的TC比賽即爲SRM。

SRM的規則總結起來就是一句話:75分鐘做完3道難度遞增的題。

TC的每個用戶(handle)都有自己的積分(rating),從0-3000+不等。成績越好,分數越高。

積分與顏色的對應爲:白色——未參賽(unrated);灰色——0~899;綠色——900~1199;藍色——1200~1499;黃色——1500~2199;紅色——2200+。另外排名最高的幾個人在TC客戶端中會變成紅色靶子圖標。

比賽分爲兩個Division,Div I和Div II。白色灰色和綠色的參加Div II,藍色黃色和紅色的參加Div I。Div I的題要比Div II難許多,一般DivII的最後一題和Div I的第一或第二題是一樣的。無論是Div I或Div II。三道題目的Score一般爲250, 500和1000。

TC的計分規則很詭異,可以見http://www.topcoder.com/wiki/display/tc/Algorithm+Competition+Rating+System,但基本是沒人看的懂。不過,TC積分規則的基本思想很簡單。

首先是SRM每道題的計分規則。題目從打開開始計時,隨着時間的流逝,你這道題目可能得到的分數也越來越少。不過分數減少的速率會逐漸變慢(有人說是先快後慢再快再慢,我不清楚到底哪個是對的,不過總體趨勢是越來越慢),一般1000分的題目在降低到300分的時候就基本不會再下降太多了。每道題點擊Submit纔算正式提交,如果Submit之後發現錯誤,還可以再次點擊Submit修改提交,不過這樣會扣除這道題一定的分數。

其次是TC的計分規則。複雜的數學公式很難看懂,但大概的計分思想是:根據此次比賽的得分算出一個這次比賽的rank,然後和以前的rank做比較,求出一個期望的rank,再根據這個期望的rank調整rating。而有時也會出現考得很砸但依然漲rating的情況,不過總體來說TC的計分公式是十分穩定的。

運行環境

TC的客戶端是一個Java程序,所以需要JRE(Java Runtime Environment)或者JDK(Java Development Kit)來運行。如果平時不寫Java程序的話,裝JRE就可以了。畢竟JDK比JRE大一個數量級,下載慢。安裝照着提示完成就行了。推薦使用1.4.1以後的版本,因爲帶了java web start,可以快速登陸。具體方法下一部分講。

JRE下載地址(中文):http://www.java.com/zh_CN/download/index.jsp

註冊

原文在註冊的地方沒有詳細說明,但很多人似乎對註冊都有疑問。所以這裏我來註冊一個小號,並通過整個過程講解如何註冊。

首先打開http://www.topcoder.com/tc(本文後面TopCoder的主頁都指這個網址),然後點擊右上角的Register Now(沒看到?你可能看到了一個Login,目光向下挪一點,那個紅底白字的“Register Now”就在下面)。接下來會彈出http://www.topcoder.com/reg這個頁面,因爲我們要參加SRM,所以選擇第一個,Competition Registration。如果要參加TCHS可以選擇第二個High School (Secondary School) Registration。這些以後都可以更改(這裏沒有選的如果以後要選上,只需要更新個人設置並挑勾;如果選上的要撤銷選擇則需要點一個“Unregister”的鏈接)。這裏選擇項目的多少和後面的頁面需要填寫內容的多少相關,本文以只選擇第一項爲例。

需要填寫的項目和對應的中文翻譯如下:

* Given Name: 名

* Surname: 姓

* Address1: 地址1

Address2: 地址2

Address3: 地址3(如果一行寫不開,就在三行中分別寫)

* City: 城市

State (US Only): 地區(不在美國就不用選)

Postal Code: 郵編

Province: 省

* Country: 國家

* Country to represent: 代表國家(不知道啥意思,中國人兩個都填China就行)

* Timezone: 時區(選Asia/Chongqing)

Phone Number: 電話號碼

* Email Address: 電子郵件

* Confirm Email Address: 確認電子郵件地址(就是把電子郵件地址重新打一遍)

Email Notifications: 郵件提醒(就是它給你發郵件提醒什麼東西)

- Algorithm Competitions 算法比賽,就是SRM和TCOpen

- Software Development Opportunities 貌似就是有軟件開發的項目就告訴你

- Employment Opportunities 工作機會

- TopCoder News & Events 新聞

* Enable Member Contact: 允許成員聯繫(似乎就是說是不是讓別人在TC上能找到你)

* Show / hide earnings: 顯示/隱藏收入(大概是說別人是不是能看到你賺了多少錢,TC的比賽可是有錢賺的)

* User Name: 用戶名(下面的話提醒你一定不要填錯,因爲註冊多個用戶是不符合規定的。據說有人因爲別人在TC客戶端和他打招呼說“怎麼你拿小號上了”,那個人的號就被封了)

* Password: 密碼

* Confirm Password: 確認密碼

* Secret Question: 密碼找回問題(找回密碼時需要回答這個問題,注意至少要8個字符長,而一箇中文字似乎算一個字符,所以最後可能要打幾個問號補齊長度)

* Secret Question Response: 密碼找回問題答案

Quote: 座右銘,就是個簽名檔之類的東西

* Student/Professional: 學生/職業程序員

* = required 帶*的項目必填

填寫之後點Term of Use下面的I Agree,再點Submit,完成提交。除了用戶名別的以後似乎都可以改。

接下來進入Demographics頁面,這個大概相當於一個註冊用戶情況調查。

* Age : 年齡

* Gender : 性別(Male男,Female女)

* Ethnic Background : 民族背景(似乎選Asian or Pacific Islander就行吧……)

* Primary Interest in TopCoder : 在TC的主要興趣,看不懂的就選第一個吧,那個是說你的興趣在獎金……

* Shirt Size : T-Shirt大小(有的比賽會給排名前N的選手發T-Shirt,這裏你需要選擇適合自己的大小,如果選最後一個說明你不想要T-Shirt,人家也不發你了。TC的T-Shirt還是挺好看的,比AStar的好)

* College Major : 大學的專業

* College Major Description : 這個不知道啥意思,隨便填點東西就行……

* Degree Program : 學位(從上到下分別爲:準學士,學士,碩士,博士,中學生)

* Graduation Year : 畢業年份

* Graduation Month : 畢業月份

* Clubs / Organizations : 組織(一般選None,可以按住Ctrl點鼠標多選)

Other Clubs / Organizations : 其它組織

* School: 學校(點Choose School選擇學校,可以搜索,不過爲啥shanghaijiaotong university才2個人註冊?!)

* Show / hide my school: 顯示/隱藏我的學校

GPA: 不懂的自己百度去……

GPA Scale: 同上

Resume: 簡歷

* How did you hear about TopCoder?: 你怎麼知道的TC,如果選了“Member Referral”的話,需要填寫那個人在TC的用戶名(歡迎填寫sqybi~)

* = required

點Submit,進入Confirm頁面,確認信息。如果有誤可以點Edit修改,否則點最下面的Confirm提交。

接下來進入Success,提示你已經發送一封郵件到你的郵箱中,你必須去點擊裏面的鏈接激活用戶。激活之後就可以使用這個用戶了。

登錄

登錄的方法一般都是使用Java Web Start。

在TopCoder主頁(http://www.topcoder.com/tc)最下方有一段話,第一句是“Load the Arena as an Applet or as a Java Web Start Application”。點“Java Web Start Application”,就會自動下載登陸需要的文件(一個jnlp格式的文件,本機裝了JRE/JDK才能打開)。經測試在IE7下這個鏈接似乎不管用,在Firefox 3下正常。

然後運行下載下來的jnlp文件,就打開了TC客戶端。第一次運行和有更新的時候會自動下載安裝程序,等待即可,很快。

在我這裏有時會提示“語法錯誤”,但沒有任何影響,點“確定”就可以。啓動可能會慢一些,耐心等待。

然後輸入用戶名密碼,在Connection的地方選合適的登錄方式(一般Direct就行,如果不行的話可以試試別的或者用AUTODETECT自動檢測),在PROXY處設置代理,點GO登陸。這時可能還會提示語法錯誤,再確定就行,這個也沒有什麼影響。

界面

下面的圖們來自原文,很經典,不打算改動了。請使用等寬字體瀏覽。

主界面:

-----------------------------------------------------------------------

| Advertisements............. |

-----------------------------------------------------------------------

| Main | Lobbies | Options | Practice Rooms | Active Contests | Help ||

-----------------------------------------------------------------------

| | Clock | |

-----------------------------------------------------------------------

| Rating Key | Who's here | Chat Area |

| . | | |

| . | | |

| . | | |

| . | | |

| . | | |

|------------| | |

| MESSAGES | | |

|------------| | |

|LEADER BOARD| | |

|------------| | |

| | | |

| | |-------------------------------------------|

| | | >>_______________________________________ |

-----------------------------------------------------------------------

Advertisements 廣告。

菜單項:

- Main裏可以看在線名單和找人。

- Lobbies基本用不着,因爲用戶一般都在Chat Room 1。

- Options裏是一些選項和顏色設置。

- Practice Rooms裏有大量的練習,都是以前比賽的題目

- Active Contests只有有比賽的時候纔有用,顯示當前正在進行和將要進行的比賽以及比賽註冊之類的東西。

- Help裏是....不用說了吧。

Rating Key: handle的顏色是隨着積分而改變的,這裏顯示了積分與顏色的關係。

MESSAGES: 比賽的時候這裏有註冊提示和clarification。

LEADER BOARD: 看每個room的最高分。

Who's here: 當前room裏的人。

Chat Area: 聊天。

練習

在Practice Rooms裏隨便選擇一個room就可以進入practice了。

界面與主頁面稍有變化,但基本相同,略去不畫。主要的變化就是Who's here分成了兩塊,多了一塊Who's assigned。這塊顯示的是誰被分到了這個room。因爲是練習區,所以只要是在這裏打開過題的都算是assigned。而在正式比賽中room是由TC分配的。這裏顯示的是被分配到這個room的人。界面上還有一個變化是Chat Area頂上多了三塊。最左邊的是一個下拉菜單。裏面有三個分值,選擇後就可以打開相應的題目。中間的summary可以看這個room裏每個人的提交情況。

在practice room裏只有coding phase。提交後要判的話需要自己選擇Practice Options(多出來的菜單項)裏的Run System Test。

比賽

每次比賽(除了1年兩次的大賽)都需要在賽前3小時-5分鐘之間登陸註冊方可參加,註冊需要在Active Contest菜單中,選擇你要參加的那個比賽,再選擇Register。注意比賽前5分鐘註冊停止,這時候如果沒有註冊就不能參賽了。而註冊了沒有打開題目也視爲沒有參賽,rating不變動。

然後TopCoder開始根據每個人的rating分配room,一般每個room都有高手和菜鳥,只不過如果你的rating高,和高手分在一起的概率高一些(當然也不一定是這樣,比如我上次就和yuhch大牛分在了一起……)

分配完成後,Active Contest菜單中Register一項變成Enter。選擇後可以直接進入你被分配到的room。Active Contest菜單最下面還有一項暗色背景的Room子菜單,可以進入各個room溜達。

進入自己room的時候一般離開始只有3分鐘左右,靜一下心就可以直接開始比賽了。coding phase的過程與practice基本相同。注意每題的得分是和用的時間相關(見前面的計分規則),而時間是從你打開該題開始算的。所以一題做完後可以不急着打開下一題,先放鬆一下。

75分鐘的coding後是5分鐘的intermission,這段時間是用來休息和聊天的。

然後就是最刺激的15分鐘challenge phase,也就是通常說的cha人。打開summary,雙擊別人的各題Score可以打開那題的程序,如果覺得有錯誤就可以點左下的Challenge然後輸入你認爲他會錯的輸入數據,如果輸入數據合法那麼系統會用標程的輸出和這個程序的輸出對比,如果出現不同則cha人成功。成功的話你能得到50分,對方該題分數爲0;而如果失敗了,你會被減去25分。每個程序只能成功被cha一次,也就是說,如果有人cha掉了這個程序,你就不能再次cha。但是一個人可以cha某個程序很多次,直到這個程序被cha掉或者你放棄。

Challenge結束後就是System Test。這個過程一般比較慢,可以先走開做其他事,過20分鐘再回來看結果。System Test中的測試數據有兩種:一種是出題者準備的測試數據,一種是成功cha掉別人的數據。所以,TC中很少出現有bug的程序能通過System Test的情況。

結果出來後再過一段時間,就可以看到一系列message,比如rating更新了,新的practice room建好了以及可以通過主頁查看這次比賽的數據了。這時比賽就宣告結束。

注意事項

1.在TC主頁(http://www.topcoder.com/tc)上可以看到Next SRM,這是下次SRM的時間。注意我們的時間與他們剛好相差12小時,因此若時間是7月9日9:00 PM的話,這裏是7月10日9:00 AM。還有要注意的是美國有夏令時,非夏令時的時候,還要再加1小時,就是7月10日10:00 AM。

2.Practice Rooms裏寫的程序只要點SAVE就可以保存,下次login的時候還可以看到,但是比賽時候的程序必須Submit纔可以在coding phase結束後保存(coding phase結束前還是隻要SAVE就可以的)。

3.若想cha別人的程序,自己必須是正分(0分也不行),所以若沒有一題有正確的程序但有很好的數據的話,隨便交一道看上去正確的程序,然後在challenge的時候快下手,就可以賺到了。

4.客戶端自帶的編輯器只有基本的編輯功能和編譯及測試功能,所以若覺得不方便的話可以使用parser和plugin,TC主頁最下面有plugin的連接。每個plugin都有詳細說明文檔,這裏不再贅述。

5.TC的FAQ:http://www.topcoder.com/?&t=support&c=index

6.最後一條,千萬不要作弊,會有嚴重的後果。

SRM的輸入輸出

SRM是不用標準或文件輸入和輸出的,只要寫一個類的一個成員函數。也就是說,你需要編寫的並不是一個完整的程序,而是一個類。

輸入是成員函數的參數,輸出用return,所以經常需要STL中的vector和string。

因爲TC的系統並不測試標準輸出,所以標準輸出可以當調試用。

編輯器

打開題目後,TC默認使用的編輯器爲Standard,在右上角可以看到,choose your editor。我們可以通過使用插件的方式增加自己的編輯器。

隨便進入一個Practise Rooms,可以看到增加了一欄爲Tools,Tools下有個TopCoder Plugins,點擊進入,或者通過這個鏈接:

http://www.topcoder.com/tc?module=Static&d1=applet&d2=plugins

常用的編輯器有KawigiEdit、PopsEdit和FileEdit,其中KawigiEdit編輯器已經將運行sample的功能添加了進來,會比較方便一些。

以安裝KawigiEdit爲例說明下插件的安裝方法。

a.下載KawigiEdit,從上面的頁面鏈接或者是

http://www.topcoder.com/contest/classes/KawigiEdit/KawigiEdit.jar

下載放到一個目錄中,比如:

C:\Documents and Settings\Administrator\桌面\topcoder

b.進入Options->Editor,在這裏添加新的編輯器。點擊Add按鈕,在Name一欄輸入編輯器的名字,比如KawigiEdit;在EntryPoint一欄輸入jar的運行方式,這裏是:kawigi.KawigiEdit;ClassPath就是類所在的位置,這裏通過Browse按鈕將KawigiEdit.jar的地址添加進來,比如C:\Documents and Settings\Administrator\桌面\topcoder\KawigiEdit.jar

c.將KawigiEdit設置爲默認的編輯器,將Default複選框打勾

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章