基本規則 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複選框打勾 |
【轉】TopCoder 規則入門
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.