コンテスト中に気をつけること

思いつき次第追加する

全体的なこと

  • 問題文だけ読んで考察を始めない。問題を開いたら制約・サンプルまで一度目を通す。(誤読して実装した後に気づくの防止)
  • 提出する前にコードを見直す(後で書こうと思ってたことを忘れたりしがち)
  • できるだけ最大ケースを試す(入力が整数一個の時とかは簡単なのでやる)
  • 0-indexed と 1-indexed を同時に使わない

やりがちなミス

  • 負の割り算で壊れるやつ
  • リーディングゼロを弾くとき "0" を弾く
  • H と W, N と M, R と C とかを逆にする

WA の原因がわからない時

  • 小さい制約で愚直解と比較
  • 出力のフォーマットはあっていますか(特に構築とかでやりがち)
  • 最小のケースとかコーナーはありませんか?
  • 実装方針を変えてみる

TLE の原因がわからない時

  • 関数の引数で無駄に vector のコピーとかをしてませんか?(参照で渡す)

考察が詰まった時

  • わかっていることを整理する
  • 愚直を考える
  • 実験
  • より簡単な問題を考える
    • 一般グラフの問題→木の場合を考える
    • 木の問題→パスの場合を考える
  • 単調性はありますか?二分探索できませんか?
  • 入力が行列 or 考察すると行列が出てくる → その行列を隣接行列だと思ってグラフを考える