競プロでやりがちなミス集

自分がよくやりがちなミスをまとめてみました。
このようにまとめておくことで、

  • よくやるミスをやらかさないよう注意深くなる
  • 解法は合っているはずなのに何故かWAする、といった場合に疑うべき場所が明確になる

という効果を期待しています。D言語特有の仕様とかも結構あるので、一般にはあまり役に立たなさそうです。

  • longにすべきところをintにしてオーバーフローさせてしまう
  • 10^^12と書いてオーバーフローさせてしまう(正しくは 10L^^12)
  • 1<<60と書いてオーバーフローさせてしまう(正しくは 1L<<60)
  • while (a.front < x) のように書いてしまいRE(正しくはwhile (!a.empty && a.front < x), 空配列でないことを逐一チェックする必要がある)
  • BinaryHeapをminが出てくると勘違いしてしまう(BinaryHeap!(Array!T, "a < b")()みたいに書くので)
  • 尺取り法が上手く実装できない
  • 境界条件があやふや
  • 中央値を求めるときにソートし忘れる
  • infを十分大きな値にしていない
  • BFSするときに頂点を見たときに距離を書かなきゃいけないのに、頂点を訪れたときに距離を書いてしまう
  • 空チェックをせずに、a.lowerBound(x).frontと書いてRE
  • bitwise orをxorと勘違いしてしまう


なにかまた思いついたら更新します。