AtCoder Beginner Contest ABC408 解法メモ
文中で使用しているのは、PythonライクでAtCoderに最適な言語の1つNimです
ABC408
ABC408A - Timeout
解法
T[it]<=T[it-1]+SだったらYes、
そうでなけれはNoと出力すればよい
ACコード
メモ
ABC408B - Compression
解法
ACコード
メモ
A.sorted.deduplicateでもよい
ACコード
ABC408C - Not All Covered
解法
各城壁を守っている砲台の数を表す配列
それには、逆に、各砲台の守る城壁の範囲にある各
計算量を勘案すれば、
c[L]+=1; c[R+1]-=1
としてから、累積和をとるimos法を用いるとよい
ACコード
ABC408D - Flip to Gather
解法
目標となる状態は、「
dp[先頭からi番目まで][どのかたまりにいるか]=変更しなければならない文字の数
とするDPを考えれば、
dp[0][0]=S[0]; dp[0][1]=1-S[0]を初期値に、
dp[i][0]=dp[i-1][0]+S[i]
dp[i][1]=min(dp[i-1][0]+1-S[i],dp[i-1][1]+1-S[i])
dp[i][2]=min(dp[i-1][1]+S[i],dp[i-1][2]+S[i])
と遷移させればよい
dp[^1].minが答え
ACコード
メモ
しばらく問題意図が全くわからなかった
題意からランレングス圧縮、制約から尺取り法を疑うも不能だった
ABC408E - Minimum OR Path
解法
すべての
(左のビットがそれより右のビットに関係なく大小関係を左右するので)全
そのときの各桁の結論(
辺の採否を記録する配列を用意し、
いちいちwi shr i and 1を重みとしたダイクストラをして各桁を決めていく
ACコード
メモ
具体的には、(未確定の桁は判断に入れないためにすべて
一旦、a-=1 shl iにした(注目桁を一旦
a or wi==aになれば(これまでの左桁もふまえつつ、注目桁もorをしても
結果、
最後の
ACコード
Discussion