Educational Codeforces Round 75

スポンサーリンク

A. Broken Keyboard

連長圧縮して奇数長の成分があるかどうかです.

B. Binary Palindromes

$n-1$ 個を回文にすることは可能です.$0$ を優先して詰め込んでいくと,$0,1$ が混在するものは 1 種以下にできるからです.

全部を回文にできるかは,$1$ 個組いくつと $2$ 個組いくつに分割できるかという条件を判定することになります.

C. Minimize The Integer

偶数同士・奇数同士の順序は固定というのが作れるものの条件です.よって,偶数部分の先頭または奇数部分の先頭を使うということを貪欲に繰り返していけばよいです.

D. Salary Changing

二分探索判定問題を考えます.答が $K$ 以上にできるかを判定できればよいです.全部 $L$ でとったときから比べて,$K$ 以上であるものを増やすのに必要なコストが列挙できます.このコストが小さいものから貪欲に使っていきます.

E2. Voting (Hard Version)

$m$ が多い方から貪欲に戦略を決定します.「ここまででいくつは購入することにしなくてはいけない」という値が決まります.それを満たすように,必ず購入することにする・判断を保留するの選択をしていきます.

F. Red-White Fence

$k$ の制約が小さいので選ぶ $b_i$ を固定して $k$ 回解けばよいです.

$n$ を固定したとき,$a_i=n$ であるような $i$ の使い方は「使わない」「左だけ」「右だけ」「左右両方」のどれかです.これらを決めると並べ方は一意に決まります.

$a_i=n$ となる $i$ の個数に応じて,$1$, $1+2x$, $1+2x+x^2$ のどれかをかけていく形になります.畳み込みで,並べる枚数ごとの数え上げをまとめて計算できます.

なお $F(x)=(1+x)^a(1+2x)^b$ の計算は$F'(x)/F(x)$ が低次の有理式になることを使えば線形時間でも計算できます.(下の提出ではそれはやっていません)

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