Educational Codeforces Round 61

スポンサーリンク

A. Regular Bracket Sequence

貪欲な順に並べたものがどうなっているかを判定.

B. Discounts

ソートして上から $n$ 番目を無料にする.

C. Painting the Fence

除く1人目を固定した上で2人目を全探索します.各場所が何回被覆されているかを求め,ちょうど1回だけ被覆されている場所の個数を求めると,2人目を除いたときの値が計算できます.

D. Stressful Training

二分探索を考えます.二分探索内では,各時刻において何もしなかった場合の充電切れ時刻が最も早いものを優先する貪欲を prique でシミュレーションます.

E. Knapsack

重さが奇数のものを,偶数個使うか奇数個使うかを全探索します.$w$ を使う個数の偶奇を決めたら,$0$ または $1$ 個の使用を確定させたあと,重さ $2w$ のものが半分の個数あるという状況に帰着します.残った問題はすべての重さが偶数なので,これを全部半分にして桁 dp のように再帰的に解きます.

F. Clear the String

区間 dp.$L$ 文字目と $M$ 文字目が同じステップで消す場合,$[L+1,M)$ を最初に操作しておけば $[L,R)$ のコストは $[L+1,M)$ のそれと $[M,R)$ のそれの和で書けます.

G. Greedy Subsequences

greedy な次の要素に辺を張ると,有向木が出来て,指定された区間内の頂点での最長パスということになります.

始点ごとの ANS を管理し,使用不可能な間は $-\infty$ になるようにしておきます.$v$ が使用可能になったら $v$ へ到達可能な始点に $1$ を加算します.このように部分木クエリの問題になります.

CodeForces
スポンサーリンク
シェアする
maspyをフォローする
maspyのHP
タイトルとURLをコピーしました