競プロでやりがちなミス集
自分がよくやりがちなミスをまとめてみました。
このようにまとめておくことで、
- よくやるミスをやらかさないよう注意深くなる
- 解法は合っているはずなのに何故か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と勘違いしてしまう
なにかまた思いついたら更新します。