爆肝為高中生舉辦程式競賽是不是吃錯藥了呢 - LYS, 小b

2019 年底,我們幾位大一大二的學生為高中生舉辦了全國資訊學科能力競賽的模擬賽。這場模擬賽參賽人數達上百人,是近幾年內學生自發舉辦的比賽中最為盛大的。

本議程將分享這場模擬賽的緣起與籌辦過程,以及我們如何使用 GCP、Docker、ELK Stack 等平台與技術架設應付眾多參賽者摧殘的競賽系統。

最後,再次感謝 Google Developers 乾爹的 GCP 經費贊助 <(_ _)>

先備知識

tags: SITCON 2020 共筆 SITCON 2020 2020 共筆 R2

歡迎大家來到SITCON 2020 ヽ(✿゚▽゚)ノ
共筆入口:https://hackmd.io/@SITCON/2020
手機版請點選上方 按鈕展開議程列表。

請從這裡開始

評測方式

  • 人工評測:寫完後舉手,檢測官會帶一張紙來看輸入輸出正不正確,並在心中默數時間
  • Online Judge

辦一場比賽

  • 宣傳
  • 題目
  • 系統

全國模擬賽

  • 一年一度 by教育部
  • 前十名近奧林匹亞培訓營
  • aka模擬考
  • 熟悉時間、心態、難度

分工

  • 出題:3人
  • 驗題:3人
  • 系統:2人

題目設計

流程

  1. 構想
  2. 題敘,輸入輸出格式,包裝成應用題
  3. 寫出官方解法,可以正確答對題目
  4. 產生測資
  5. 驗題
    1. 確認解法無誤
    2. 確認測資無誤
    3. 確保測資夠強,避免被亂搞 (數字要夠大才看得出時間複雜度)

注意事項

  1. 避免太易(如今年學測數學)或太難(如今年指考數學)
  2. 測資數量要在強度和系統負荷間取得平衡(出題組和系統組會吵架QQ)

online judge

  1. 常見:
    1. CMS
    2. DOMjudge
    3. Kattis
    4. PC^2 (應該被淘汰)

CMS

  • Contest Management System
  • Open source
  • Distributed system
  • Remember to change secret key and password (or it will be like CTF)
  • Install worker on different server

CMS on GCP

  • 150人的比賽算是大比賽
  • 快、執行速度穩、資源多
  • 300USD 可以使用三週的籌備、比賽 (精打細算過的)

before

  • 高中伺服器的VM
  • 執行時間不穩
  • 資源不夠

系統環境-Docker

  • CMS需要安裝眾多套件
  • 編譯器版本要固定

Spec

  • 主機:google compute engine
  • 資料庫:google cloud SQL
  • 跑程式:64 臺 CMS Workers
  • IP:google cloud NAT

用二分搜找到請求ip的上限:32

  • 找 Google 乾爹解決

Dashboard

  • 察看比賽資訊

悲劇比賽

  • 沒有online judge
  • 系統long queue
  • 假解比賽

QA

Q: 題目字數多少才適合?
A: 千萬別太多,太多會看不完

Q: code 可以retry幾次?
A: 時間上傳間隔1分鐘

Select a repo