AtCoder Beginner Contest ABC424 解法メモ
文中で使用しているのは、PythonライクでAtCoderに最適な言語の1つNimです
ABC424
ABC424A - Isosceles
解法
a==b or b==c or c==aかどうかを判定すればよい
ACコード
メモ
怖くなってa+b<c and b+c<a and c+a<bも入れてしまったが、制約を見れば不要だった
ABC424B - Perfect
解法
制約から、問題番号によらず、各人が正解した回数を数えていき、
ACコード
メモ
わざわざ問題別に消し込んで、答えの数列に加える際も、二重計上しないように「まだ答えの数列に入っていないなら」などと回りくどい処理をしていた
ABC424C - New Skill Acquired
解法
有向辺の多始点BFSで、到達できる頂点数が答え
問題文から、
すなわち
ACコード
メモ
なぜか早々にUnion-Findと信じ込み、ほとんどの時間を溶かしてしまった
問題文を落ち着いて読めば、いくらでも回避できた
ABC424D - 2x2 Erasing 2
解法
dp[
として、
dp[H][1 shl W]で初期値inf、ただしdp[0][S[0]]=0、とした配列を準備、
今の行の全状態
遷移としては、
dp[i][k]=dp[i-1][j]+(
dp[^1]の最小値が答え
ACコード
メモ
bitDPなど浮かばない
bitopsの諸関数の使い方がおぼろげ
集合
ABC424E - Cut in Half
解法
長い方から二等分を繰り返す、
つまり、進行しても、長さの種類は増えていかないので、同じ長さのものをひとまとめに処理することを考えれば、計算量は増えずに済む
(-実数の長さ,本数)のHeapQueueを用意して、
その後、大きい方から
ACコード
メモ
公式解説では、
すべてをある長さ以下にする回数は(元の長さをある長さを下回るまで
逆に、二分探索で
それを用いて
あとは、大きい方から
とされているが、圧倒的に面倒な上、二分探索において安易にwhileで構えてもACにならない
ACコード
Discussion