Codeforces Round 1072

A. Social Experiment

$1$ 以外の非負整数は $2,3$ に分割できます.

B. Hourglass

周期 $2K$ があります.$M$ を $2K$ で割ったあと適当な場合分けをします.

C. Huge Pile

操作で登場する数は $\lfloor x/2^k\rfloor$ や $\lfloor x/2^k\rfloor + 1$ と書ける $O(\log n)$ 個の数のみで,それらに対する答を計算します.

D. Unfair Game

設定が無駄に複雑ですが,単に「$1$ を引く / 偶数を $2$ で割る」の $2$ 種の操作で $0$ にするときの最小操作回数が問題となっています.

$n$ 未満の非負整数全体に対するコストの頻度分布を持ちます.

すると,奇数,偶数の場合について分けて考えることで,$2n$ 未満の非負整数全体に対するコストの頻度分布も求まります.

計算量は $O(\log^2 n)$ が可能で,$n$ が $2$ べきであるという条件は無視しても解けます.

E. Exquisite Array

$K$ 以上の差になっているところに辺を張ったときに,ある連結成分から $2$ 点選ぶというのが解の形です.

$K$ について降順に処理して,連結成分をマージしていきます.

F. Cherry Tree

ある部分木内だけで操作を考えたときの操作回数について考えます.

ひとつは $v$ だけを操作するパターンで,操作回数は $1$ です.それ以外は,各部分木内での操作回数の和です.

mod 3 で 0, 1, 2 回の操作回数が可能であるか否かを求める dp でできます.

ABC269Ex の要領で,mod 3 と言わずとも可能な操作回数集合を求めることもできるでしょう.

G. Nastiness of Segments

$\min = d$ という両辺について,左辺は広義単調減少,右辺は狭義単調増加です.

よって,左辺の方が真に大きい範囲などを二分探索すればよいです.

そのまま $O(N\log N+Q\log^2N)$ のような実装でもよいし,セグメント木二分探索で $O((N+Q)\log N)$ にすることも可能です.

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