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密碼的畫面)

 

就會跳出白色的視窗了

pc2serverlogin 

這邊帳號密碼是 site1/site1

 

然後要求輸入比賽的密碼,這邊是自己設定,以後近來都要打這個密碼

contestpass  

sever開好之後就可以不要理他了

sever  

 

接下來是pc2admin(管理者)

windows: start bin\pc2admin

ubuntu: sudo ./bin/pc2admin &

pc2admin不一定要跟server同台電腦,可是建議要更新的時候要開在同一台電腦,不然到時候要更新in/output檔案會非常非常慢

 

這邊預設帳號密碼是 root/administrator1

admin  

 

進去之後有幾個要設定的地方

 

Judgements: 可以設定回傳的judge結果訊息,可以自己新增回傳訊息,可是算Accept的只有第一個

judgement  

 

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,不然我會把它關掉

 

pG  

 

Judging Type:設定judge 型態

Computer Judging:自動judge,然後 Manual Review是自動judge完後需要人工審核回送judge結果

Send Preliminary Notification to the team是電腦judge完後會回傳她judge訊息給參賽者,但是並不會是真正結果

真正結果還是要人工審核才行,所以這個感覺沒甚麼用,又會混淆參賽者

 

Manual Judging: 就是人工judge,judge要自己去run 跟看答案以及給judge結果

pJT  

 

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

pVal  

 

Setting可以設定一些比賽的資訊

Contest Title: 比賽名稱,會顯示在scoreboard網頁上面

Team Information Displayed to Judges: 到時候judge可以看到送程式碼參賽者的那些資訊

Maximum output size: output檔案最大大小,這邊要記得改成所有輸出檔中最大的大小以上,如果沒改的話參賽者輸出超過這大小他就會自動切掉並且給Wrong Answer

Judges' Default Answer: judge在回答問題時有個按鈕可以回傳不予回應,這邊是預設它的內容

setting  

 

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

times  

 

Account:設定帳號密碼,如果在登入root時不想打那麼長的密碼可以在這邊設定

 

Generate:產生帳號,產生後的帳號密碼預設會跟帳號相同

gen  

Add:直接加入帳號,不過因為這樣權限要自己去勾有點麻煩,還是建議用Generate

Edit:修改帳號,Display Name會顯示在scoreboard上面,然後右邊是權限的部分,其中有一個

Shown on scoreboard display取消掉可以讓你的帳號不要顯示在scoreboard上面,可以用在測試帳號上面

edit  

 

Load:可以直接把資料load進來

Save:可以把目前資料存出去

要修改密碼時可以先用 Save存檔之後,再用程式或是手動去修改檔案,最後再Load回去,這樣改會比一

個一個去編輯還要快很多

 

Auto Judge:如果有用自動judge的話,要在這邊設定哪台要自動judge那些題目,如果題目有設定自動judge但是沒有開自動judge的judge的話,

那送交的程式碼就會卡住,也沒辦法人工judge

autoj  

 

 

Scoreboard

windows: start bin\pc2board

ubuntu: sudo ./bin/pc2board &

帳號密碼看你在管理員新增時是甚麼就是甚麼

scoreboard要開在有apache的電腦外面才連的到,如果有雙網卡(筆電無線網卡+區域網卡)就可以讓斷網的

比賽區跟外面的連線區可以同時看到scoreboard

scoreboard產生的檔案會在 pc2/html下面,有很多種,大家可以選自己喜歡的格式,我自己是用 summary.html

如果覺得太醜可以自己改,這邊( http://alan790712.pixnet.net/blog/post/66244828 )有簡單的改法以及檔案

 scoreboard  

 

Judge

windows: start bin\pc2judge

ubuntu: sudo ./bin/pc2judge &

帳號密碼看你在管理員新增時是甚麼就是甚麼

開judge帳號的機器本身需要有裝編譯器,而且要設定環境變數(cmd視窗下可執行)

另外如果有開auto judge就會多下面那張途中間的小視窗,如果想暫時關掉auto jduge 點stop auto judging即可(若是judge卡住也可以暫時關閉再重開)

 

judge  

 

arrow
arrow
    全站熱搜

    alan790712 發表在 痞客邦 留言(1) 人氣()