デバッグに失敗した,ないし,長時間かかった間違いの記録
ABC212E Safety Journey
2023/07/05 あさかつ
無向グラフが,完全グラフからM本の辺を除いたものとして与えられている. 除く辺は $(u, v)$ の形で与えられている. dp[i][j] = (i 回の繰返し後,頂点 j に到達できる方法の数) という DP で, 全体から 除いた辺の分を引く. $(u, v)$ と $(v, u)$ の両方を引かなければならないところ, $(u, v)$ しか引かなかった.
ABC279F BOX
2023/07/05 あさかつ
タイプミス
正:
if (rx == -1 and ry == -1) {
誤:
if (rx == -1 and ry == 1) {
ARC164B
2023/07/09 コンテスト
誤読.
- 正: 木の好きな頂点を選んで出発できる
- 誤: 木の根から出発する
ABC222E Red and Blue Tree
2023/08/02 あさかつ
宣言を間違えた.
正:
vector A(M, Fp(0));
誤:
vector<ll> A(M, Fp(0));
ABC318C Blue Spring
- 「周遊セット」を買う枚数 $x$ を全探索する問題.
- ちゃんと考えると,買う枚数の候補は $0$ 枚以上 $\displaystyle\left\lceil \frac{N}{D} \right\rceil$ 枚以下,とわかる.
- コンテスト中で焦っていたので,面倒だから $0$ 枚以上 $N$ 枚以下で いいや,と考えた.($N$は十分小さいのでこれでも間に合う)
- ところが,それを
REP(x, 0, N)
とコーディングしてしまった. もちろん,REP(x, 0, N + 1)
でなければならない.
ARC167B Product of Divisors
A が整数であって,$ k \leq A / 2$ を満たす整数 k の最大値を求めよ, という形になった.当然,A の偶奇で場合分けが必要なのだが, A が偶数と思い込んでしまった.
ABC237E Maximize Rating
DP表を埋めるとき,本来は,あり得ないところ (スタート地点から遷移してこないところ) は,マークしておいて計算しないようにすべき. それをサボって,適当な計算をしてしまっていた.
ABC334F Christmas Present 2
[後記: その後遅延セグメント木の1点代入をサポートしたから,今なら大丈夫なはず]
遅延セグメント木で,query の演算は double の最小値で, 作用の演算として,区間加算と1点代入をやりたかった. 遅延セグメント木の OP としては加算にしておいて, p を代入したいところでは,query で値 v を取ってきて -v + p を加算すればよい, と思ってコードを書いた.
最小値演算の単位元は 1e18 とかしておいた. ところが,query でとってくる値がその 1e18 付近の値 (もっと大きいこともあった) になっていて,ぐちゃぐちゃになった.
対処として,格納する値は 1e15 くらいにして通すことはできたが,あまり良くない. 加算と代入の両方ができるように OP を定義すべきであった.相手が最小値だから, 両方無理なく定義できる.
なお,問題としては,実はセグメント木は不要だった.
ABC267E Erasing Vertices 2
二分探索の下端の誤り.条件を満たす $A_i$ たちの和の最大値を最小化する問題. 各 $i$ について $A_i \geq 1$ だったので,探索下端を $1$ としてしまった, 「条件を満たす $A_i$ 」というのが一つも無くて,和が $0$ になるケースで失敗した.
二分探索の上端の誤りも良くある.
Codeforces Round 972 (Div.2) C Lazy Narek
DP table を -1 で初期化して,値が負の時には,そこにくるパスはないからスキップするといういつものパターンを使った. ところが,この問題では,途中の値が負になり得るのだった. 初期化を -1e18 などで行う必要があった.
keywords: 愚かな, 間違い, 誤り,