赤への練習:解説を閉じて再構成する
2800は学習項目の修了証ではなく、競技での継続的な成績です。典型の暗記から、発見・証明・実装を一人でつなぐ練習へ移ります。
言語:Python / 計算量:課題ごとに評価
前提:未知問に向かう:不変量と反例 / 高速解と愚直解をぶつける / DP高速化は条件を証明してから
考え方
- 未見のARC・AGC過去問に時間を決めて挑みます。
- 詰まった場所を「観察・定式化・証明・実装」に分解します。
- 解説を読んだ翌日、白紙から証明とコードを再構成します。
具体例
解説が「総和を固定して交換する」なら、交換して目的値が悪化しない理由を自分で書く。コードを再現できるだけでは理解を確認できません。
実装
# 練習後の記録例(プログラムとしても実行できます)
review = {
"観察": "小さい例を列挙した",
"不足": "交換後も制約を満たす証明",
"次回": "翌日に白紙から証明を書く"
}
print(review["次回"])注意する条件
誰でも必ず赤になれる期限や方法はありません。停滞時は問題を小さくし、前提知識へ戻ります。睡眠を削るノルマは設けません。
確認問題
解説を閉じた翌日に優先するのは? 再構成/丸写し
解答と理由
再構成
必要な観察・証明・実装を自力で再現し、抜けた部分を特定します。
実装課題
任意の非負整数 a,b を (a-1,b+1) に変える。ただし a≥1。総和を保つ操作の確認として、入力 A B からこの操作後を出す。A≥1、B≥0、各≤10^9。次に総和が保たれる式を書こう。
入力:
5 2
出力:
4 3参考実装
a,b=map(int,input().split())
print(a-1,b+1)
# (a-1)+(b+1)=a+b。これは必要条件の確認であり、
# より複雑な問題の十分条件までは示さない。