TopCoder SRM(Arena) 一日游记
呃,其實我是個菜如一只雞的家伙了,想了那么久說要去打Topcoder 的srm,從配置好到實際打,中間間隔估計超過1個月.
當然第一次srm人品比較好,250和500水過,950的沒想法也就認了,實力就沒到那里,然后Challenge階段hack 2/2,然后莫名的就給我定到了1411,缺個口的藍名。
不過說老實話,Topcoder Arena這個客戶端在默認配置下的使用難度真是讓人覺得有點悲傷……
我就把我調教Topcoder Arena的經歷和第一次打SRM寫在這里和(qiu)大家分(pai)享(zhuan)了,讓大家見笑了。
(整體以我在Win下的配置為例,Linux下據說有更多坑,不敢往下跳,Mac OS,那我就更沒玩過,后兩種系統的同學們自行谷哥)
0、前期準備
Part 0:學習一種語言
Topcoder Arena(SRM)現在支持的語言有,C++(gcc 4.8.1,且支持C++11特性,clj表示使用起來非常舒爽,但是老實說Codeforces管理員測出來開-O2有bug)、Java(好像是Java7,現在Java8出來了有沒有更新不知道)、MS C#(看起來是.NET 4.0,現在是不是.NET 4.5我沒有條件測試——有個Lambda和LINQ夠帥了)、MS VB.NET、Python(據說很老,查到有說Python2.6的?)
(這些語言的運行環境可以參見:http://apps.topcoder.com/wiki/display/tc/General+SRM+Algorithm+FAQ)
(另:Topcoder對提交的代碼的評測環境好像有些遮遮掩掩的,新老版本網頁混合運行的情況下這個最新的準確信息更難找到了,Codeforces上這個相對做的較好了,專門一個頁面說明所有編譯器、運行命令情況)
這里要注意到沒有C語言,因為Topcoder的題目和傳統acm/icpc題目要求編寫的代碼是有區別的,Topcoder的形式下你要做的是:
約定了你提交的代碼中的類名和待調用函數的名稱和參數類型,實現這個待調用函數,返回預期的結果(而不是通過標準輸入輸出返回)。
也就是說,你寫題的時候不可避免的涉及到類這個概念。
而且,C++的同學們要注意,在傳入和返回字符串、數組等的時候,Topcoder上一般給出的形式是string、vector<>這種,所以,C++的同學不會STL(的基本用法)那就基本沒法做題了。(搞一本劉汝佳的紫書,把第5章學習一下沒錯的)
其實用哪種語言都要注意,系統庫提供的一些非常實用的常用算法和容器你還是要非常熟悉的,比如排序。不熟悉的語言就不要貿然使用了,不然蠻拖累你的編程階段的。
Part 1:注冊一個Topcoder賬號,并且補充個人信息
注冊賬號的流程和其他注冊賬號的區別并不大,不過和國內的相比是略顯繁雜
點擊此處的Sign Up
注:常見問題是,點擊Sign Up后沒有任何反應,或者移動到左側的About Topcoder等沒有出現下拉菜單
這是由于Topcoder所使用的jQuery沒有被正確加載所致(在一個cdn上,估計被block了),解決方法就是——爬梯子。
按上面的要求填寫,這些都是必填項,Email請填寫真實Email,因為需要郵件激活。
另外能讓我小小的吐槽一下嗎,密碼一定要大小寫字母和數字混合的,而且強度必須滿足要求,這好像是我注冊各種賬號中,在蘋果之后的第二家……
這樣注冊了,如果只是想打打TC Arena,夠用了,如果有一些TC相關活動想參與(比如2014.7.29 的 [topcoder]Asia Programming Comptition),還需要補充一些信息。
Log In登錄,然后
1、點一下主頁——My Account——Account Settings
2、點一下 Update my profile
3、跟著向導一步步完善你的個人信息(不懂的單詞,那就找找英語詞典吧)
Part 2:安裝并配置JRE
Topcoder Arena是一個Java應用程序,現在的環境下,你必須需要通過Java Web Start啟動。
好吧,就算你是個想好了不用Java寫題的C++/C#/VB.NET選手,抱歉,Java Runtime Environment還是要裝(JDK倒是沒必要,畢竟不用寫Java程序)。
(另:linux下的同學請注意,據說OpenJDK的web start跑這個Arena跑不起來,為了您 的幸福,還是裝一下Oracle的JRE/JDK吧)
不同系統環境下的具體安裝方法和系統環境變量的配置方法這個大家都可以搜索到的,這里就不講了。
1、第一次啟動Topcoder Arena,第一次做練習
前面的準備工作做足以后,終于可以開始第一次見識一下Topcoder Arena了。
不知道你有沒有把JRE的bin目錄加到你的環境變量的path里,有的話:
Win+R,然后輸入cmd,回車打開命令提示符
然后,復制粘貼一下下面這個命令
==============================================================
javaws http://community.topcoder.com/contest/arena/ContestAppletProd.jnlp
==============================================================
是的,就上面這一行
(你可以選擇保存成一個.bat文件,放在桌面上當一個快捷方式用)
多等一會(視網絡情況而定),你就能看到Topcoder Arena的登陸界面了
常見問題1:
我怎么按上面的步驟打開,提示無法啟動應用程序,詳細信息說是,發現未簽名的條目呢?(如下圖)
答:這種情況多見于新的Java7/Java8下。Java7/Java8增強了安全性,限制非常之嚴格
解決方法:把topcoder的域名加入例外站點中。
打開Java控制面板(Windows下:控制面板-Java,或者開始菜單-Java-配置Java),切換到安全選項卡。
看到“例外站點”列表了嗎?點擊邊上的“編輯站點列表”
點擊添加,輸入http://www.topcoder.com(必須是這樣輸入的,一個字符都不能省,也不能改)
單擊空白地方,彈出提示框
點擊“繼續”,之后一路確認,保存這個修改。然后順帶清空一下Java應用程序緩存(必須步驟,不然不起效)。
再啟動試試看,就好了,問題解決。
常見問題2:
之前用TC Arena好好的,突然有一天開始,無法見到這個登陸界面,Java總是說無法打開應用程序,怎么回事?
這種情況一般多見于TC Arena更新后。Java有這種jnlp應用的緩存機制,會緩存jnlp的,但是很可能會導致使用過老的jnlp,從而訪問已經不存在的老版本jar文件。
解決方法:清空一下Java的緩存。打開Java控制面板,臨時Internet文件-設置-刪除文件,確定,重新嘗試打開客戶端,就沒事了。
然后輸入你注冊時的handle和你的密碼,點Go登錄
有的時候點Go也登陸不進去,有可能是Topcoder的Arena在做維護,也有可能是你的網絡有點悲催,只能說,多試試就行了。
下面是登陸以后的界面
在做TC Arena里的題目之前,首先要設置一下默認語言。
依次點擊上面菜單欄的Options--Setup user preferences
單擊Editors選項卡,在Default Language里選擇你所喜歡使用的語言,之后注意要【單擊右下角的Save,再單擊Close】
然后我們要開始TC Arena上第一次看看它的題目應該怎么做了。
單擊菜單欄上的Practice Room,這里放了TC歷次的比賽題目。我們這次以SRMs-985-SRM 628 Div2 為例。
這里就是比賽時和練習時能看到的房間了。
單擊下拉菜單,可以看到每個題目的分值,選擇某個分值,稍后就能看到相應的題目。
一般TC上題目的分值都是250-500-1000的分布(每題可能上下浮動50分),從點開題目開始減分,通過一個略復雜的函數計算你到某一秒時提交這個題你的得分。
這里,我們選擇最簡單的250分題看看。
之前我們說過,做Topcoder Arena的題目時,你只需要完成一個類的一個方法即可。
整個界面的最頂上約定了題目的類名、方法名、傳入參數的類型、返回值的類型。
界面上半部分是題目描述,下半部分是打代碼的地方。
你可以看到,下面空空如也,于是我們首先要完成一個類的基本框架
class BishopMove {public:int howManyMoves(int r1, int c1, int r2, int c2) {return 0;} };
之后我們把這個方法內要寫的一切都寫好。(當然,你可以自己再多加幾個方法供這個主要的被調方法調用)
然后你可以點擊Complie編譯(編譯通不過的TC Arena不會讓你提交的),點擊Test進行一下測試,再點擊Submit進行提交,提交成功會返回給你你這次提交的得分
如果你覺得你之前的提交有問題,你可以重復提交,但是重復提交將會以最后一次提交的得分為準,并且你還要額外損失大約10%的得分
(所以要又快又準)
然后,在練習模式下,你可以即時的進行系統測試
在練習房間里,單擊Practice Options-Run System Test,之后系統將會評測你的提交并返回你的提交是否通過了系統測試
===========================這是一條分割線===================================
Topcoder Arena本身所提供的功能就簡單介紹到這里。
不過大家肯定有感覺,如果每個題我都要把類的框架這樣辛辛苦苦寫好,測試還要一個個測試點自己一次次測過去,那真是太麻煩了。
幸好,Topcoder Arena提供了插件功能,你可以選用自己喜歡的插件作為默認的Editor。
限于篇幅,本篇只能介紹這么多了,之后將會有3篇文章,分別來介紹一下Topcoder Arena平臺上流行的3種插件方案(就當我挖了這3個坑了)
1、CodeProcessor+FileEdit+任意一款數據生成器(最傳統的方案)
2、KawigiEdit(Arena默認的Editor的加強版,clj也在用的插件)
3、Greed 2.0(我個人非常喜歡的插件,默認配置非常簡單且已經夠好用了,而且還在更新)
這三種方案所需的插件文件我已經整理上傳了,下載地址:http://pan.baidu.com/s/1qWFevA8
總結
以上是生活随笔為你收集整理的TopCoder SRM(Arena) 一日游记的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 怎么找到电脑的打印机
- 下一篇: 聚石塔,云鼎,多多云-----有一种坑叫