「CMS」:修訂間差異

出自TFcisWiki
跳至導覽 跳至搜尋
(匯入)
 
無編輯摘要
 
(未顯示同一使用者於中間所作的 6 次修訂)
行 1: 行 1:
官方文件: https://cms.readthedocs.io/en/v1.4/
官方文件:https://cms.readthedocs.io/en/v1.4/


==== 上架題目 ====
== 建立競賽 ==
# 點擊 Administration
每個題目需要設定的內容包含了:
# 在 Contests 段落,點擊 (create new contest...)
# 在 Name 輸入英文競賽名稱,此欄位不會顯示給參賽者
# 點擊 Submit


== 設定競賽 ==
* 題目名稱
以下說明是根據預設設定需要修改的欄位,其餘欄位不需更動。
* 計分模式
* 時間限制(ms)
* 記憶體大小限制(MiB)
* 上傳間隔(s)
* 測試資料
* 配分


{| class="wikitable"
計分模式 要設定成 IOI 2017。在 CMS 當中是顯示:
|-
<code>Use the sum over each subtask of the best result for that subtask across all submissions (IOI 2017-)</code>
! 欄位 !! 欄位說明 !! 操作說明
上傳間隔 則是依照每場比賽不同而調整。
|-
| Description || 中文競賽名稱 || 顯示於競賽介面左上角
|-
| Allowed programming languages
| 參賽者可以使用的程式語言
| 僅勾選以下 4 項,其餘取消勾選
# C++11 / g++
# C++14 / g++
# C++17 / g++
# C11 / gcc
請務必測試每個語言皆能正常編譯
|-
| Allow user tests || 開啟「線上測試」介面,允許參賽者在伺服器上編譯並執行自訂輸入 || 視競賽決定是否勾選
|-
| Token mode || || 設為 Disabled
|-
| Start time || 競賽開始時間 || 注意時區為 UTC,為本地時間 -8 小時,建議於準備時期設為未來日期,在競賽開始前才設為正確時間
|-
| End time || 競賽結束時間 || 同上
|-
| Minimum interval between submissions || 上傳時間間隔 || 應設為空字串,不對所有題目進行限制,應對個別題目限制
|}


== 設定題目 ==
以 IOI 2021 為例,建格式設定 1 分鐘(60 秒),最後的 15 分鐘取消上傳間隔。
如果使用 [[TPS]] 格式,通常匯入後無需在 CMS 管理介面進行設定。以下說明手動新增題目需設定的欄位。


{| class="wikitable"
測試資料 的部分可以依照下面的格式走:
|+ Task configuration
|-
! 欄位 !! 欄位說明 !! 操作說明
|-
| Name
| 題目英文名稱
| 顯示於:
# CMS 競賽概況的題目列表。
# CMS 題目敘述。
# CMS 系統內部用來識別題目的 [[zhwiki:主鍵|Primary key]]。
#* 由於同一 CMS 系統上的名稱無法重複,若與其他競賽題目衝突<ref>https://github.com/cms-dev/cms/issues/765</ref>,建議加上競賽名稱的英文縮寫作為前綴(例如「2022P-」)。
|-
| Title
| 題目中文名稱
| 顯示於:
# CMS 競賽概況的題目列表。
# CMS 題目敘述頁面。
|-
| Feedback level
| 對參賽者顯示完整評測結果
| 設為 Full
* Restricted:僅顯示第一筆非 AC 結果(及前面的所有 AC 結果)
* Full:顯示所有結果
|-
| Token mode || || 設為 Disabled
|-
| Minimum interval between submissions || 上傳時間間隔 || 視比賽而定
|-
| Score mode || 計分模式 || 應設為 Use the sum over each subtask of the best result for that subtask across all submissions (IOI 2017-)
|}


{| class="wikitable"
* 輸入檔 副檔名為 <code>.in</code> (上傳到 CMS 的時候記得要指定副檔名是 <code>*.in</code>) 名稱依照 <code>{子任務編號}_{子任務測資編號}</code> 如果該題只有一個子任務可以省略 <code>{子任務編號}_</code> 例如第一筆子任務的第三個側資檔名就會是 <code>1_3.in</code>
|+ Datasets
* 輸出檔 副檔名為 <code>.out</code> (上傳到 CMS 的時候記得要指定副檔名是 <code>*.out</code>) 名稱依照 <code>{子任務編號}_{子任務測資編號}</code> 如果該題只有一個子任務可以省略 <code>{子任務編號}_</code> 例如第一筆子任務的第三個側資檔名就會是 <code>1_3.out</code>
|-
! 欄位 !! 欄位說明 !! 操作說明
|-
| Time limit || 時間限制 || 單位為秒
|-
| Memory limit || 記憶體限制 || 單位為 MiB
|-
| Task type || 題目類型 || 通常為 Batch
|-
| Score Type || 計分類型 || 通常為 GroupMin
|-
| Score Parameters || 分數參數 || 參見[[#Score Parameters|Score Parameters]]
|-
| Test cases || 測資 || 參見[[#Upload testcases|Upload testcases]]
|}


{{reflist-talk}}
最後把全部的測資包成一個 zip,直接選擇一次上傳多筆測資(Upload Multiple Subtasks)


=== Score Parameters ===
配分 的部分我們通常是使用 GroupMin,也就是子任務的每一筆測試資料都要通過才會拿到整筆子任務的分數。
分數參數格式為 <syntaxhighlight lang="json" inline>[[m1, t1], [m2, t2], ...]</syntaxhighlight> ,根據你命名測資檔的方式,分為以下兩種格式。


可參考:https://cms.readthedocs.io/en/v1.4/Score%20types.html#groupmin
如果是採用編號的方式命名測資名稱,那麼可以選擇使用這種方式:

<code>[[子任務1配分, 子任務1測資數], [子任務2配分, 子任務2測資數], ...]</code>
==== 流水號 ====
或是使用 Regular Expression 來表示對應到的測資名稱:
適用於檔名依序命名為 1, 2, 3...。
<code>[[子任務1配分, 正則表達式1], [子任務2配分, 正則表達式2], ...]</code>

可以參考: https://cms.readthedocs.io/en/v1.4/Score%20types.html#groupmin
tn 表示依序號使用的測資數量,前 t1 筆測資配分為 m1,接下來 t2 筆測資配分為 m2,以此類推。

例如 <syntaxhighlight lang="json" inline>[[20, 10], [30, 20], [50, 30]]</syntaxhighlight> 表示:第 1 ~ 10 筆測資 20 分、第 11 ~ 30 筆測資 30 分、第 31 ~ 60 筆測資 50 分。

==== 依測資點分組 ====
適用於檔名命名為 「a-b」,a 為測資點,b 為該測資點的流水號,例如 1-02 表示第 1 個測資點的第 2 筆測資。

tn 為一正規表達式,例如 <syntaxhighlight lang="json" inline>[[20, "1-.+"], [30, "2-.+"], [50, "3-.+"]]</syntaxhighlight> 表示:第 1 個測資點 20 分、第 2 個測資點 30 分、第 3 個測資點 50 分。

如果需要讓該筆子任務的測資直接包含其他子任務,可用正規表達式方式達成。

=== Upload testcases ===
點擊 Add multiple testcases 後會進到上傳測資介面,測資應預先準備於一個資料夾內,建議輸入檔副檔名為 .in,輸出檔副檔名為 .out,並壓縮成 zip 檔。

{| class="wikitable"
|-
! 欄位 !! 欄位說明 !! 操作說明
|-
| Archive || 壓縮檔 || 選擇壓縮檔
|-
| Public || 是否公開測資點(並非公開測資內容) || 應勾選
|-
| Overwrite existing testcases || 覆蓋相同檔名測資 || 視情況勾選,通常更新測資時需勾選
|-
| Input file names template || 輸入檔命名規則 || 通常為 *.in
|-
| Output file names template || 輸出檔命名規則 || 通常為 *.out
|}

== 上傳限制 ==
上傳限制為參賽者上傳程式碼答案的相關限制,通常為連續兩次上傳的間隔時間限制,亦有可能包含總上傳次數的限制。

上傳限制應根據競賽性質設定,對於[[資訊學科能力競賽校內選拔]],初賽可比照南區賽,複賽比照全國賽。其他競賽可參考國際資訊奧林匹亞競賽(IOI)等重要競賽,以下列出重要競賽的規定以供參考:

* IOI 2009 ─ 似乎無時間限制,總次數 50 次。<ref>http://www.ioi2009.org/index.jsp?ln=2&id=361</ref>
* IOI 2010 ─ 似乎無限制。<ref>https://ioi2010.org/rules.shtml</ref>
* IOI 2012 ─ 間隔 1 分鐘,總次數 64 次。<ref>http://www.ioi2012.org/competition/rules/index.html</ref>
* IOI 2013-2014 ─ 間隔 1 分鐘,總次數 100 次。<ref>https://www.ioi2013.org/competition/rules/</ref><ref>https://www.ioi2014.org/competition/contest-rules.html</ref>
* IOI 2016 ─ 間隔 1 分鐘,競賽最後 15 分鐘解除限制,總次數 100 次。<ref>http://infolymp.ru/juniors/files/IOI2016Rules.pdf</ref>
* IOI 2017-2022 ─ 間隔 1 分鐘,競賽最後 15 分鐘解除限制,總次數 50 次。<ref>https://ioi2017.ir/contest/rules/#submitting</ref><ref>https://ioi2018.jp/competition/competition-rules/#submitting</ref><ref>https://ioi2019.az/en-content-14.html#Submitting</ref><ref>https://ioi2020.sg/rules/#submitting</ref><ref>https://ioi2021.sg/rules/#submitting</ref><ref>https://ioi2022.id/competition-rules/</ref>

{{reflist-talk}}

於 2022年8月18日 (四) 23:23 的最新修訂

官方文件:https://cms.readthedocs.io/en/v1.4/

建立競賽

  1. 點擊 Administration
  2. 在 Contests 段落,點擊 (create new contest...)
  3. 在 Name 輸入英文競賽名稱,此欄位不會顯示給參賽者
  4. 點擊 Submit

設定競賽

以下說明是根據預設設定需要修改的欄位,其餘欄位不需更動。

欄位 欄位說明 操作說明
Description 中文競賽名稱 顯示於競賽介面左上角
Allowed programming languages 參賽者可以使用的程式語言 僅勾選以下 4 項,其餘取消勾選
  1. C++11 / g++
  2. C++14 / g++
  3. C++17 / g++
  4. C11 / gcc

請務必測試每個語言皆能正常編譯

Allow user tests 開啟「線上測試」介面,允許參賽者在伺服器上編譯並執行自訂輸入 視競賽決定是否勾選
Token mode 設為 Disabled
Start time 競賽開始時間 注意時區為 UTC,為本地時間 -8 小時,建議於準備時期設為未來日期,在競賽開始前才設為正確時間
End time 競賽結束時間 同上
Minimum interval between submissions 上傳時間間隔 應設為空字串,不對所有題目進行限制,應對個別題目限制

設定題目

如果使用 TPS 格式,通常匯入後無需在 CMS 管理介面進行設定。以下說明手動新增題目需設定的欄位。

Task configuration
欄位 欄位說明 操作說明
Name 題目英文名稱 顯示於:
  1. CMS 競賽概況的題目列表。
  2. CMS 題目敘述。
  3. CMS 系統內部用來識別題目的 Primary key
    • 由於同一 CMS 系統上的名稱無法重複,若與其他競賽題目衝突[1],建議加上競賽名稱的英文縮寫作為前綴(例如「2022P-」)。
Title 題目中文名稱 顯示於:
  1. CMS 競賽概況的題目列表。
  2. CMS 題目敘述頁面。
Feedback level 對參賽者顯示完整評測結果 設為 Full
  • Restricted:僅顯示第一筆非 AC 結果(及前面的所有 AC 結果)
  • Full:顯示所有結果
Token mode 設為 Disabled
Minimum interval between submissions 上傳時間間隔 視比賽而定
Score mode 計分模式 應設為 Use the sum over each subtask of the best result for that subtask across all submissions (IOI 2017-)
Datasets
欄位 欄位說明 操作說明
Time limit 時間限制 單位為秒
Memory limit 記憶體限制 單位為 MiB
Task type 題目類型 通常為 Batch
Score Type 計分類型 通常為 GroupMin
Score Parameters 分數參數 參見Score Parameters
Test cases 測資 參見Upload testcases

參考資料

Score Parameters

分數參數格式為 [[m1, t1], [m2, t2], ...] ,根據你命名測資檔的方式,分為以下兩種格式。

可參考:https://cms.readthedocs.io/en/v1.4/Score%20types.html#groupmin

流水號

適用於檔名依序命名為 1, 2, 3...。

tn 表示依序號使用的測資數量,前 t1 筆測資配分為 m1,接下來 t2 筆測資配分為 m2,以此類推。

例如 [[20, 10], [30, 20], [50, 30]] 表示:第 1 ~ 10 筆測資 20 分、第 11 ~ 30 筆測資 30 分、第 31 ~ 60 筆測資 50 分。

依測資點分組

適用於檔名命名為 「a-b」,a 為測資點,b 為該測資點的流水號,例如 1-02 表示第 1 個測資點的第 2 筆測資。

tn 為一正規表達式,例如 [[20, "1-.+"], [30, "2-.+"], [50, "3-.+"]] 表示:第 1 個測資點 20 分、第 2 個測資點 30 分、第 3 個測資點 50 分。

如果需要讓該筆子任務的測資直接包含其他子任務,可用正規表達式方式達成。

Upload testcases

點擊 Add multiple testcases 後會進到上傳測資介面,測資應預先準備於一個資料夾內,建議輸入檔副檔名為 .in,輸出檔副檔名為 .out,並壓縮成 zip 檔。

欄位 欄位說明 操作說明
Archive 壓縮檔 選擇壓縮檔
Public 是否公開測資點(並非公開測資內容) 應勾選
Overwrite existing testcases 覆蓋相同檔名測資 視情況勾選,通常更新測資時需勾選
Input file names template 輸入檔命名規則 通常為 *.in
Output file names template 輸出檔命名規則 通常為 *.out

上傳限制

上傳限制為參賽者上傳程式碼答案的相關限制,通常為連續兩次上傳的間隔時間限制,亦有可能包含總上傳次數的限制。

上傳限制應根據競賽性質設定,對於資訊學科能力競賽校內選拔,初賽可比照南區賽,複賽比照全國賽。其他競賽可參考國際資訊奧林匹亞競賽(IOI)等重要競賽,以下列出重要競賽的規定以供參考:

  • IOI 2009 ─ 似乎無時間限制,總次數 50 次。[1]
  • IOI 2010 ─ 似乎無限制。[2]
  • IOI 2012 ─ 間隔 1 分鐘,總次數 64 次。[3]
  • IOI 2013-2014 ─ 間隔 1 分鐘,總次數 100 次。[4][5]
  • IOI 2016 ─ 間隔 1 分鐘,競賽最後 15 分鐘解除限制,總次數 100 次。[6]
  • IOI 2017-2022 ─ 間隔 1 分鐘,競賽最後 15 分鐘解除限制,總次數 50 次。[7][8][9][10][11][12]

參考資料