60分自律解答
概要
JOI本選の問題を60分間、完全自律で解く練習。
ボスからの返信はない。自分で判断して動け。
時間管理ルール(厳守)
開始時の記録(必須)
問題を受け取ったら、最初に以下のコマンドを実行:
echo "開始時刻: $(date '+%Y-%m-%d %H:%M:%S')" && echo "終了予定: $(date -v+60M '+%Y-%m-%d %H:%M:%S')"
出力例:
開始時刻: 2026-01-05 11:15:00
終了予定: 2026-01-05 12:15:00
この「終了予定」時刻を必ずメモし、以降の時間確認に使う。
60分経過の確認(厳守)
解説を見る前に、以下のコマンドで時間を確認:
date '+%Y-%m-%d %H:%M:%S'
確認ルール:
- 現在時刻が「終了予定」を過ぎていなければ、絶対に解説を見ない
- 「だいたい60分」「たぶん経過した」という判断は禁止
- 必ず
dateコマンドで確認してから解説を見る
運用手順
Phase 1: 自律解答(60分間)
1. 開始時刻を記録
echo "開始時刻: $(date '+%Y-%m-%d %H:%M:%S')" && echo "終了予定: $(date -v+60M '+%Y-%m-%d %H:%M:%S')"
2. 問題を解く
- ボスが問題を指定
- 60分間、ボスからの返信はない
- 該当年度の過去問ファイルは参照禁止(解説が入っているため)
- プロトコル・ナレッジファイル(00〜06)は参照OK
- 別年度の過去問は参照OK
- サンプルテストを自分で実行して確認
サンプル確認ルール(重要)
過去問ファイルのサンプルはハルシネーションしている可能性がある。
必ずAtCoderで正しいサンプルを確認してからテストする。
必ずAtCoderで正しいサンプルを確認してからテストする。
Phase 1.5: サンプル通過後の追加検証
サンプルテストが全通過しても、60分経過前なら解説を見ずに以下を実施:
- 「解説前の最終版」として保存
cp solution.cpp solution_before_answer.cpp - 境界値テスト
- 制約の最小値(N=1, M=0 など)で動作確認
- 制約の最大値付近でTLEしないか確認
- コーナーケーステスト
- 全て同じ値のケース
- 昇順・降順に並んでいるケース
- 答えが0や空になるケース
- コード見直し
- オーバーフローの可能性(int→long long)
- 計算量の再確認(制約上限で間に合うか)
- 不要な処理・冗長なコードがないか
60分経過まで改善ループを続ける。解説は絶対に見ない。
Phase 2: 60分経過後
解説を見る前に必ず時間確認!
date '+%Y-%m-%d %H:%M:%S'
- サンプルテストが全通過していれば「解けた」
- コードを出力して終了
- 解けていなければ解説を参照
- 解説を見て自力で解く(必須!元のコードを使い回さない)
- 解説の考え方を理解
- 解説の解法に基づいて新しくコードを実装
- 元の非効率なコードをそのまま提出しない
Phase 3: 再発防止策の出力
必ず以下を出力:
- 何が足りなかったか
- なぜ60分で解けなかったのか
- どこで詰まったのか
- 何を見落としていたのか
- 今後の再発防止策
- 具体的な手順として書く
- 「〇〇を行う」「〇〇のステップに沿って進める」「〇〇はしない」の形式
- 抽象的な反省(「甘かった」「できなかった」)はNG
- プロトコルへの追加提案
判定基準
- サンプルテスト全通過 → 解けた
- 提出はボスが手動で行う(手動提出支援を使用)
AtCoder手動提出支援
提出支援コマンド
cd /Users/takuhirokosa/JOI
./submit.sh <年度> <問題番号> <ソースファイル>
動作:
- ソースコードをクリップボードにコピー
- AtCoderの提出ページを自動で開く
- ボスがCmd+Vで貼り付けて「提出」ボタンをクリック
問題番号対応
| 問題番号 | 対応 |
|---|---|
| a | 問題1 |
| b | 問題2 |
| c | 問題3 |
| d | 問題4 |
| e | 問題5 |
年度対応(重要)
AtCoderのコンテスト年度は「終了年」を使用:
- JOI 2023/2024 本選 →
2024 - JOI 2022/2023 本選 →
2023