早稲田大学チームvivid_turtle 知見共有@ ウィキ
実装時にやりがちなミス
最終更新:
Bot(ページ名リンク)
-
view
デバッグのチュートリアル的な物 どうしてもバグが見つからないときに見ると役立つかもしれない
(各自追加してください)
(各自追加してください)
誤記
else if のつもりが if になっている
案外気がつかない
intとcharを間違えている
普通に動くので厄介、charを使っているとき注意
==が=になっている
条件文でやると破滅する 謎のTLE,REの原因でありがち
%が&になっている
JIS配列だとキーが隣にあるので頻発する(個人差があります)
不等号の向きが逆になっている
不等号の向きを固定すればいいかもしれない(小さい方を必ず左に持ってくるとか)
ビット演算の優先度が低くて、意図しない計算になってる
ビット演算の優先度は==よりも低く、
a & b == 0 <==> a & (b == 0)となる。
解決策としては、bit演算するときは、くどいくらい()を使おう
a & b == 0 <==> a & (b == 0)となる。
解決策としては、bit演算するときは、くどいくらい()を使おう
数学的なバグ
mod
負のあまりが発生しうる(数学の感覚と異なるので気づきにくい)特に変数のmodを取っているときに注意
解決策としては、(A - B + MOD) % MOD
みたいに、無理やり正にすればよい
解決策としては、(A - B + MOD) % MOD
みたいに、無理やり正にすればよい
0除算
変数で割っているときは注意すべき
配列,vector
bac_alloc
要素数が多すぎ or keyが負になっている
vector.eraseをしている
添え字、サイズのズレに注意
初期化忘れ
同じ配列を使いまわしているときにやりがち
区間に関する取扱い
区間の形を統一する
閉区間か、半開区間か?[a, b)か(a, b]か?(競プロでは[a, b)が多い)これらを組むときに統一させよう。
無用な区間重複を避ける
区間DPなどの更新の時に、区間をちょっとでも重複させるとバグのもとになる。細心の注意を払い、重複がないように書こう!