Educational Codeforces Round 52

スポンサーリンク

A. Vasya and Chocolate

$a$ の購入で $b$ もらえるのであって,取得に対してもらえるわけではないのでかなり明らかです.

B. Vasya and Isolated Vertices

最小値を実現するには辺ひとつで孤立点を $2$ つずつ減らせばよいです.最大値を実現するには非孤立点をクリークにするようにすればよいです.

C. Make It Equal

貪欲にとっていきます.$O(\max A)$ かけてよいので $x$ を $x-1$ にするためのコストのテーブルを作っておきます.

D. Three Pieces

最短路問題です.駒の種類,今いる場所,次にとるべき値を状態とします.

E. Side Transmutations

区間で切って,$[b_i,b_{i+1})$ と $[N-b_{i+1},N-b_i)$ の部分について置ける種類数を考えます.

結局 $K^n$ 種類のものがあるときにそれらからなる大きさ $2$ の multiset の個数をかけていく形になります.中央部分は操作できないのでそのまま $K$ のべき乗です.

F. Up and Down the Tree

親方向へ上るのは,ちょうど $\min(depth(v), k)$ のぼるとしてよいです.すると,有向グラフがあって頂点に得点が設定されていて(葉ならば 1),walk が通る得点の和を最大化する問題とできます.強連結成分をまとめて dag の topological 順に dp をすればよいです.

G. Fibonacci Suffix

$1$ 文字ずつ追加していって,その文字列からはじまる文字列の個数などを求められればよいです.

$F(n)$ が文字列 $S$ を何回 subtring として含むかどうかを求められればよいです.これは $F(n-2), F(n-1)$ が含む回数の和に加えて,$F(n-2),F(n-1)$ の境界をまたぐ部分での出現回数を加えたものとして計算できます.このためには $F(i)$ の prefix, suffix $m$ 文字分以下を保持しておいて,適当な文字列一致判定アルゴリズムを使えばよいです.

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