Educational Codeforces Round 76

スポンサーリンク

A. Two Rival Students

$N-1$ になるまで最大 $X$ 回増やせます.

B. Magic Stick

$X\geq 4$ ならば何でも作れます.$2k \to 3k \to 2k+2$ として +2 できるので十分大きくできます.

C. Dominated Subarray

ある要素が $2$ 回現れる必要があります.そのようなものの中で最小長さのものは,$2$ 回現れる要素が両端の $2$ 個だけなので条件を満たします.

D. Yet Another Monster Killing Problem

当然毎日そこから最大数とります.最大数は二分探索で計算できます.判定問題においては $S$ が十分大きいところでの $p$ を使うとしてよいです.これと敵の区間 max と比べます.

E. The Contest

$n$ 個のものを 000111222 のように 3 値に分類するタイプの最適化問題です.$3$ 状態の dp で計算できます.

F. Make Them Similar

上 $15$ 桁と下 $15$ 桁に分けて,meet in the middle で探します.

G. Divisor Set

鎖の直積であるような順序集合の最大 antichain の大きさを求めるという有名問題です.最大のランクを $n$ として,ランク $\lfloor n/2\rfloor$ の要素を集めてきた antichain が最大になります.よってランクごとの要素数を求めればよく,これは $(1+x+\cdots +x^k)$ の形の多項式の総積として計算できます.

これが最大 antichain になることの証明は,その要素を含む chain への分解がとれることを示すという形でできます.特に,「ランクが $l,l+1,\ldots,r-1,r$ の要素からなる chain であって $l+r=n$ を満たすもの」に分解できること示せばよいです.帰納法を考えると $2$ つの鎖の直積の場合について示せばよく,長方形の外周を適当にとっていけば示すことができます.

文献はこれかな?

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