pc^2是個用於競賽的軟體,目前acm-icpc, 台灣的大專盃程式設計競賽都是用這款
官網
http://www.ecs.csus.edu/pc2/
下載位置
http://www.ecs.csus.edu/pc2/secret.0918.html
要用之前要先去安裝java,另外如果要當judge的話需要設定編譯器 gcc,g++ 路徑之類的
解壓縮後,裡面會有個檔案 pc2v9.ini,這個檔案是用來設定要連線到哪台電腦的,如果是server就用localhost就好了
但是其他人就要改[client]下面的IP
[client]
# Site 1
server=localhost:50002 <= 修改 localhost 填成自己server的IP,port不用改
執行的話,因為它會檢查pc2v9.ini檔案,所以雖然執行檔都在 bin/裡面,但是要在bin/ 的上一層下指令
執行cmd,cd到pc2資料夾,然後
windows: start bin\pc2server (start是另開視窗)
ubuntu: sudo ./bin/pc2server & (& 是背景執行,不過記得要先sudo過,不然不會出現讓你打sudo密碼的畫面)
就會跳出白色的視窗了
這邊帳號密碼是 site1/site1
然後要求輸入比賽的密碼,這邊是自己設定,以後近來都要打這個密碼
sever開好之後就可以不要理他了
接下來是pc2admin(管理者)
windows: start bin\pc2admin
ubuntu: sudo ./bin/pc2admin &
pc2admin不一定要跟server同台電腦,可是建議要更新的時候要開在同一台電腦,不然到時候要更新in/output檔案會非常非常慢
這邊預設帳號密碼是 root/administrator1
進去之後有幾個要設定的地方
Judgements: 可以設定回傳的judge結果訊息,可以自己新增回傳訊息,可是算Accept的只有第一個
Languages: 可以用來設定提供的編譯參數,按add新增
Auto Populate with: 選擇程式語言,這邊選擇的程式語言必須要是在系統cmd可以直接執行的,一定要安裝而且設定環境參數
Display Name:使用者看到的語言名稱
Compile Cmd Line: 編譯參數,{:mainfile}是程式名稱,這邊要注意的是,假如是用ubuntu,gcc要 {:mainfile} -lm <= -lm要放在檔名後面
不然他會include不到
Executable FileName: 執行檔名稱
Program Execution Command Line: 執行時下的指令
Notifications可以用來設定印表機以及在scoreboard顯示的氣球顏色,不過這邊我沒有研究很多所以跳過
Problems可以用來新增題目,這邊要特別注意的是,到時候顯示在scoreboard一定是A-Z不會也不行跳號,所以在加入問題的時候一定要按照順序加入
然後即使設定隱藏題目,scoreboard 照樣會顯示= =a,只是參賽人員看不到而且不行傳而已
按Add可以新增題目
General可以設定題目名稱(即使比賽沒開始,參賽者也可以看到題目名稱),執行時間,然後是程式的IO
選擇File: 程式碼必須用file IO去吃檔案
選擇stdin: 程式碼可以用一般的輸入去吃測資,他會用導入導出來輸入輸出IO
Show the output window: 執行完後會輸出程式跑的結果,除非要人工judge,不然我會把它關掉
Judging Type:設定judge 型態
Computer Judging:自動judge,然後 Manual Review是自動judge完後需要人工審核回送judge結果
Send Preliminary Notification to the team是電腦judge完後會回傳她judge訊息給參賽者,但是並不會是真正結果
真正結果還是要人工審核才行,所以這個感覺沒甚麼用,又會混淆參賽者
Manual Judging: 就是人工judge,judge要自己去run 跟看答案以及給judge結果
Validator:設定比較的方法
Do not use Validator就是什麼都不做,你要自己去人工看output
然後Use PC^2 Validator 裡面有一些常見的比較方法,像是diff,或是忽略換行之類的,可以依照需求自己選,通常是選diff
Use External Validator:special judge,要上傳檢查的執行檔,另外要記得在非windows環境下的話
下面command line 要加上 ./{:validator} ... .... ,他不會自己幫你加,沒加的話他就不會去執行了
special judge的寫法可以參考這篇: http://alan790712.pixnet.net/blog/post/70803952
Setting可以設定一些比賽的資訊
Contest Title: 比賽名稱,會顯示在scoreboard網頁上面
Team Information Displayed to Judges: 到時候judge可以看到送程式碼參賽者的那些資訊
Maximum output size: output檔案最大大小,這邊要記得改成所有輸出檔中最大的大小以上,如果沒改的話參賽者輸出超過這大小他就會自動切掉並且給Wrong Answer
Judges' Default Answer: judge在回答問題時有個按鈕可以回傳不予回應,這邊是預設它的內容
Times:設定比賽的時間,Remaining Time 是剩餘時間,Elapsed Time是經過時間,Contest Length是全部時間,前兩項相加要等於第三
項,不然他不會讓你過;Stop Clock at end of contest沒有用,還是需要手動去停止時間。另外
1.在比賽運行時去修改時間會造成整個時間亂掉,所以不要在中途改時間
2.把比賽時間停止之後改時間,scoreboard的計算會重新開始,所以改時間就會讓scoreboard的排名亂掉(不過之前有一次比賽server是架在
windows下,結果改時間之後沒爛掉,所以不確定是不是ubuntu自己的問題)
總而言之是建議比賽開始之後就不要改時間了
選取之後按Start可以讓比賽開始,Stop可以讓比賽中止(停止之後重新開scoreboard時間會重計),start all 以及stop all可以同時開始/中
止很多比賽,不過我沒有設定過多比賽的pc^2
Account:設定帳號密碼,如果在登入root時不想打那麼長的密碼可以在這邊設定
Generate:產生帳號,產生後的帳號密碼預設會跟帳號相同
Add:直接加入帳號,不過因為這樣權限要自己去勾有點麻煩,還是建議用Generate
Edit:修改帳號,Display Name會顯示在scoreboard上面,然後右邊是權限的部分,其中有一個
Shown on scoreboard display取消掉可以讓你的帳號不要顯示在scoreboard上面,可以用在測試帳號上面
Load:可以直接把資料load進來
Save:可以把目前資料存出去
要修改密碼時可以先用 Save存檔之後,再用程式或是手動去修改檔案,最後再Load回去,這樣改會比一
個一個去編輯還要快很多
Auto Judge:如果有用自動judge的話,要在這邊設定哪台要自動judge那些題目,如果題目有設定自動judge但是沒有開自動judge的judge的話,
那送交的程式碼就會卡住,也沒辦法人工judge
Scoreboard
windows: start bin\pc2board
ubuntu: sudo ./bin/pc2board &
帳號密碼看你在管理員新增時是甚麼就是甚麼
scoreboard要開在有apache的電腦外面才連的到,如果有雙網卡(筆電無線網卡+區域網卡)就可以讓斷網的
比賽區跟外面的連線區可以同時看到scoreboard
scoreboard產生的檔案會在 pc2/html下面,有很多種,大家可以選自己喜歡的格式,我自己是用 summary.html
如果覺得太醜可以自己改,這邊( http://alan790712.pixnet.net/blog/post/66244828 )有簡單的改法以及檔案
Judge
windows: start bin\pc2judge
ubuntu: sudo ./bin/pc2judge &
帳號密碼看你在管理員新增時是甚麼就是甚麼
開judge帳號的機器本身需要有裝編譯器,而且要設定環境變數(cmd視窗下可執行)
另外如果有開auto judge就會多下面那張途中間的小視窗,如果想暫時關掉auto jduge 點stop auto judging即可(若是judge卡住也可以暫時關閉再重開)