はじまり
ずっと TTPC をやりたいと思っていたんですが…
夏休みになって、仕事がひと段落したところで、
ついに動き出しました。
MD でどんなコンテストにするのか、スケジュール等について話し合いました。
- welcome 枠 4 〜 5 問、面白い問題 5 〜 10 問くらい → 16 問 (1 問爆破で 15 問) になりました
- 3 人 1 チームでわいわいしてもらいたい (4 人以上は 1 人当たりの問題量が少なすぎる気がします)
- Open Cup に出しても耐えるくらいの難易度・質にしたい → 簡単目の Open Cup くらいにはなったんじゃないでしょうか (16 問ならなお良かった)
- 作問者の rating 制限 : 青以上 → これくらいの難易度を作るならこれくらいがちょうどいいと思います
- 普段の AtCoder で出ない問題とか 出してみたい
スケジュール
問題案を出す・評価する | 8/22 – 9/14 (24 日間) |
問題選定・準備作業割り当て | 9/14 |
問題準備 (writer の期限) | 9/14 – 9/27 (13 日間) |
問題準備 (tester の期限) | 9/14 – 10/2 (+5 日間) |
test-run | 10/15 |
コンテスト本番 | 11/5 13:00 – 18:00 |
- 準備まで夏休み中に終わらせるという決意
- 短期集中型だと思います まあ気掛かりなことは早めに終わらせると良い
- 全部の問題を見る私の労力はめちゃくちゃ多かった 長期休みでないと絶対にできません
GitHub
- issue で問題案を管理します。
- issue template があると良いです。
---
name: 問題案
about: 解けてなくても提案して OK
title: "[適当な問題名]"
labels: 問題案
assignees: ''
---
## 問題概要
<!-- 問題概要だけ必須 ほかはなくても良い -->
長さ $N$ の文字列 $S$ が与えられます。 $S$ の部分文字列であって、回文であるような文字列は何種類ありますか?
### 制約
- $|S| \le 5 \times 10^5$
<!-- 代わりに想定解の計算量を書いても良い -->
### 入出力の形式
<!-- 自明であれば省略してよい -->
## 想定解
<details>
ここに想定解を書く
</details>
## コメント・議論点など
- `$` で囲んだ数式の左に半角スペースが空いてないと表示してくれません
- 難易度のタグがあると良いです。(問題が探しやすい)
- 1 問サンプルがあると良いです。
- 問題ごとに branch を分けると良いです。(pull を忘れて merge commit は面倒なので)
- 各問題案についての議論は issue や pull request で行いました。
- pull request は merge するものだと思っていましたが、特にその必要はなく (各問題のファイルだけで完結しているため) 、結局していません。pull request すら必要ないかも。
Discord
作問者のコミュニケーションには Discord を使用しました。
- 全体連絡
- 雑談
- 問題案の欠片
- 問題議論
- オンサイト
- issue open / コメントに反応する webhook
- push に反応する webhook
とかがあると良いです。
AtCoder
chokudai さんに連絡して許可をとっておきます。オレンジ以上がいれば良い? (要出典)
日程と問題数を決めればページがもらえるかな?
オンサイト選定
- traP のハッカソンに参加します
- チームラボ賞に選ばれます
- できるならオンサイトやりたいね〜 と言っています
- チームラボの人とご飯を食べます
- TTPC の話をします
- OK!
TTPC2019, 2022 しか見ていませんが、競プロer の多い企業で、コネがあれば大体いけるのではという気がしています。
実はチームラボは東工大から生まれた東工大にゆかりのある企業なんですね〜
そもそも大学を使うという手があります。今回はコロナ禍のルールで学外者があまり呼べないのではないかとなり、学外に。
問題評価
- スプレッドシートを作って各問題の評価と難易度を書き込みました。
問題選定
- 難易度の gap があるところで 3 つに分けました。(– 1800, 2000 – 2600, 2800 –)
- 問題案の量を見て、バランス良く 5 問, 5 問, 6 問 を採用しました。
- 配点もここで決定しました。
問題準備
サンプルが 1 問用意して、
- 問題文をコンパイルしてクリップボードにコピーするシェルスクリプト
- generator をコンパイルしてテストケースを生成するシェルスクリプト
- validator をコンパイルして検証するシェルスクリプト
- checker をコンパイルして C++ の solution を実行し、実行時間と答えをチェックするシェルスクリプト
- checker をコンパイルして Python の solution を実行し、実行時間と答えをチェックするシェルスクリプト
- AtCoder にアップロードするシェルスクリプト
とか作っておくと初心者も比較的スムーズに作れたと思います。全員 C++ がある程度書けました。
test-run
主な目的は、(今回は難易度順に並べたので) 難易度予想が外れてないか確認することと、問題に変なところがないか確認することです。
あくまで補助的なものなので、test-run までにはこのまま出題できるようにしておきます。
ここで J が 300 点から 400 点に、o が 150 点から 200 点に変更になりました。
解説
- AtCoder に解説を書いて、スライドは簡単に、裏話とか入れてという感じにしました。(そうじゃないと 1 時間に収まらない)
- どっちか 1 つにするのも良いと思います。
- 18:00 までコンテストをやって、そこから 1 時間解説をやって解散すると 19:30 … (かなり懇親会ってやつをやりたいですね)
名札
traP の力で traP の @Onagadori さんにデザインしていただきました。名札は裏返りがちなので、両面あると良いようです。
オンサイト
- チームラボの方にお水とお菓子、ポケット Wi-Fi などをご用意していただきました :man_bowing:
- 1 階に誘導を配置し、会場に受付を作ります。
- 諸注意で F5 連打 (ip ban チェック) をやります。
- 諸注意スライドと司会は他の人に任せても良かったかな〜 あまり交流ができず、かなしい
おわり
- マネジメントとコンテスト admin と難しい問題の writer / tester とオンサイト運営を全部やりました。2 ヶ月を TTPC につぎ込むことになりました。
- コンテスト admin と難しい問題の writer / tester はやるしかないとして、マネジメントとオンサイト運営には関わらないくらいでちょうどいいのではないでしょうか。