Codeforces Round 789

div1 問題のみ.

スポンサーリンク

A. Tokitsukaze and Strange Inequality

まず $b$ を止めると $p_a$ の分布が決まり,$c$ をスライドさせながら $p_d$ の分布を変化させれば,すべての $(b,c)$ に対する答えが手に入ります.

B. Tokitsukaze and Meeting

幅 W の区間それぞれに 1 があるかを調べておきます.答はその W 個おきの区間和として書けます.

C. Tokitsukaze and Two Colorful Tapes

色を頂点と思うと次のような言い換えになります:

順列(入次数・出次数がともに 1 の有向グラフ)があって,各頂点に順列のラベルとつける.このとき辺の価値は始点と終点のラベルの差の絶対値.価値の和を最大化せよ.

$|a-b|=\max(a-b,b-a)$ なので,好きな方から好きな方を引くとしてよいです.すると各要素の寄与係数は $2,0,-2$ のいずれかです.係数 $2$ のもの,$-2$ のものの個数 $k$ を決めたとき,それら $k$ 個ずつに大きい・小さいラベルを割り当てることになります.$k$ の最大化はサイクルごとに考えればよいです.

D. Tokitsukaze and Permutations

$v_i$ の変化を考えると,すべてから $1$ を引いたあと左にスライドするという形になります.

E. Tokitsukaze and Beautiful Subsegments

max で場合分け.$(i,j)$ の候補は全列挙可能です.

区間がいくつかあるのでそれを少なくともひとつ含む区間を数える.というタイプの問題が登場します.区間に包含があるものは大きい方を除いておくと,区間の左端・右端ともに単調になります.するとすると条件を満たす $(l,r)$ は区間の個数と同じだけの長方形領域の和として表せます.

長方形状に点を置くことを $O(N\log N)$ 回やる.長方形内にいくつ点があるかを $Q$ 回数えよ.ということになります.あとは https://judge.yosupo.jp/problem/static_rectangle_add_rectangle_sum です.

F. Tokitsukaze and Gems

なぜか設定が入り組んでいますが普通に計算するだけです.

各要素 i に対して

  • $i<l$, $l\leq i\leq r$, $r<i$ のどれにするかを決める($\sum_l \sum_r$ の処理)
  • $\sum p^tt^k$ を使うかどうか,$[t_i>0]$ を使うか決める.
    • 前者を使う場合はその和,後者を使う場合は a[i],どちらも使わない場合は a[i]+1 で寄与.

あとは $\sum p^tt^k$ と $[t_i>0]$ がどちらもちょうど 1 回使われていて最初の決め方が 000111222 のようになっているようなものを計算すればよくて,これは適当な dp で行えます.

難所は $\sum p^tt^k$ の計算ですが,これは $c + p^nf(n)$ の形($f$ は $k$ 次多項式)と書けるので,この $f$ を求めて多点評価すればよいです.

$f$ を求めるのは $O(k\log k)$ 時間でできます.

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