Try   HackMD

板橋高中資訊學科能力競賽系統說明

登入

以下為機器測試的網址

校外:https://cms.pcshic.club
電腦教室:http://192.168.8.251:8888

接下來就可以登入了,帳號為你的學號,密碼為當初註冊時所設定之密碼。

如果不想用英文介面的話右上方有藍色按鈕可以切換介面語言。

競賽概況 (Overview)

這邊寫著這場競賽的開始時間與結束時間,以及這場競賽中所有題目的資訊,包含題目名稱、時間限制、記憶體限制等。

訊息詢問 (Communication)

在這個地方會有提問的介面,為了方便主辦方快速了解你的問題,對題目提問時請在標題選擇題目代號,並盡可能詳細敘述你的問題,待主辦方商討後會盡速回覆你。

有時在這邊也會看到競賽公告,像是對題目變數範圍的補充或是題目沒寫的資訊會在這邊補充。競賽重要事項如延長等也會在這邊公告。

理論上有公告或是你的問題被回覆時會有通知。

參考資料 (Documentation)

這邊列的網站是你在賽中可以查看的網站,除了這些網站及競賽系統外的網站禁止瀏覽。

除了參考用網站還有一些資訊如評測結果詳細說明等可供各位使用。

Hello, CMS (Hello_CMS)

這類題目是最普遍的,所有的輸入輸出都跟平常寫程式的時候一樣,而你要根據題目要求及輸入,輸出對應的答案,這題是範例題,因此不用輸入,只要輸出指定的字串就好。

如果要提交答案的話,左邊選單的「HELLO_CMS」欄位下有「評測頁面」的欄位,在你上傳後稍後就可以看到你這次上傳獲得的成績,有些題目可能會比較久,請耐心等待。

當評測完後,點開詳細資料可以看到每一筆測試資料的詳細狀況,如果一個子問題的所有測試資料都答對的話,就可以獲得這個子問題的分數。

在競賽中採用的是聯集給分,每一題計分的時候會採計那題答對過的所有子問題的分數。

A+B=N (ABN)

這題要你構造出

M 組不同的數對
A,B
,使得每一組的
A+B
都是
N
。雖然題目本身不難,但同學們應該可以注意到,這題的答案可以有很多種,像是如果
N=3,M=1
,那輸出
1 2
或是
2 1
,都是合法的答案,不論輸出哪一組答案,系統都會判定為正確,主辦方會寫好檢查用的程式來決定你的答案是否正確,所以除非題目有特別說要輸出哪個特定的解,不然只要符合題目的要求,都會被當作正確。

接下來看到題本最下方的評分說明,可以看到第三個子問題「你在這個⼦任務會獲得的分數是你輸出正確的數對數量⼀半」,代表在這個子問題中,你不一定要輸出完全正確的解答也可以拿到分數,即使只輸出一半也可以得到對應的分數,這種類型的子問題被稱為「連續給分」,所以同學們在比賽的時候,也可以特別注意有沒有這種特殊給分的子問題能多拿分數。

丟雞蛋問題 (Egg)

這題的題本上方就明確的表示「本題為互動題」,代表這是一題特殊類型的題目。這類型的題目會將一些資訊隱藏起來,只能透過題目提供的詢問方式來慢慢將你要的資訊推敲出來。

簡單來說這題的內容是,你有

60 顆一模一樣的雞蛋,這些雞蛋的共同點就是在超過
h
樓的地方將其摔下去就會破掉,而題目就是將這個
h
隱藏起來,並且可以讓你一顆一顆把雞蛋從高樓摔下來,根據摔下去的狀況來推敲出
h
的值。

這類型的題目在題目敘述的頁面下方會有一個檔案,將這個檔案下載下來解壓縮後會看到三個資料夾,分別是對應語言的資料夾,在這些資料夾中有許多檔案,如果你對互動題不熟悉的話,可以只專注在 Egg.cpp/Egg.py 的檔案上。

在檔案中已經有許多東西了,可以只看中間這塊被兩個註解夾住的區域,只要專心寫裡面的東西就好了,其他的都可以忽略,即使更改外面的東西也不會讓你得到較高的分數。

你可以發現裡面已經有一個寫了一些東西的函式,看到題本中要求你要完成一個函式 long long height(long long M) ,並回傳正確的

h 值,在這個函式中的東西就是你要設計的解題策略。題目會提供你一個函式 int is_broken(long long k) ,這個函式可以讓你知道在高度
k
的地方摔雞蛋會不會破,也就是當你要摔雞蛋的時候,就可以呼叫這個函式,題本中都會寫好函式的使用限制,請多加留意。

在程式碼中已經有寫好一種解題策略了:「如果在第二層樓摔雞蛋破了,那就回傳

1,否則回傳
2
」,為什麼要這樣寫呢?請看回題本最下方的評分說明。

在評分說明中,第一個子問題是

M=2,代表
h
介在
1
2
之間,表示答案只有
1
2
兩種,所以如果在
2
樓摔雞蛋破了代表答案是
1
樓,否則答案就是
2
樓。

再往下看到題本最後一頁,這裡寫著「你可以直接上傳該檔案來獲得

12 分」,這個子問題就可以拿來檢驗之後你寫的程式是不是有問題,每一題互動題都會分配一定的分數給這種直接上傳就有的分數。

假設你擬定好了一套策略,也撰寫好了程式碼可以直接編譯,或是資料夾中也提供不同語言的編譯指令可供使用。

使用編譯指令的同學可能要另外設定環境參數

題本往下看到範例評分程式這邊,題本中會說明這題程式的讀取方式,像這題程式的讀取方式是:「第一列:

Mh」,所以可以到程式這邊輸入 2 1 測試看看。程式會輸出「Accept: 1」,代表我們只摔了一顆雞蛋就答對了這次的測試,另外題本下方還有很多正確或錯誤的訊息可以幫助我們 debug。

其實互動題的操作不只有這些,由於互動題比較困難,同學們可以仔細閱讀一遍題本再作答。

數獨 (Sudoku)

這類型的題目也很特殊,是「Output Only」的題型,當然不是請你輸出就好,而是「只需要提交輸出檔」的意思。

這題就是請你解數獨,不過就像普通的數獨一樣,題目已經給你了,只需要填好就好。在題目敘述頁面下方有一個附件,裡面有「1.in~10.in」共十個檔案,每個檔案都是一個數獨,各位可以自己玩玩看。

如果解完的話可以回到評測頁面提交答案,這邊會有

10 個上傳檔案的地方,你玩完哪份就上傳到哪個欄位裡面。

你會想說這不就是玩很多數獨而已嗎,哪需要資訊?可以點開「10.in」看看,你會發現這麼龐大的數獨根本沒辦法解出來,所以題目其實就是要你想辦法用程式解開這些數獨,如果要用程式解數獨的話可能會需要一些開檔讀檔的技巧,各位同學可以上網搜尋看看要怎麼做喔!

如果一次把很多題目解完了,也可以一次把那些檔案都上傳,只要將檔名更改成「output_編號.txt」的形式,並將那些檔案壓縮成 .zip 檔,就可以在評測頁面中一次上傳了。

這類型的題目會自動聯集給分,也就是你已經答對的題目不需要重新上傳檔案,題目在計分的時候會將所有答對過的分數都計入。

總結

最後想跟各位同學說,校內賽大多數的題目都是前兩種題型的題目,難度也有調整過,同學們可以不用太擔心到時會什麼分數都拿不到。
如果有任何問題,歡迎同學寄信到「mail@pcshic.club」詢問。如果是在競賽途中有問題,也請充份利用競賽的提問系統。

祝各位同學比賽順利!