Educational Codeforces Round 64

スポンサーリンク

A. Inscribed Figures

四角形と三角形が隣接すると無限大です.そうでないとき,基本的には隣接 2 種だけ見ればよいですが,四角形・円・三角形と続いた場合に交点をまとめることができます.

B. Ugly Pairs

文字種が $4$ 種以上あるとできます (222444111333).$3$ 種以下の場合で非自明なのは $3$ 種の場合です.$3$ 種の文字が全部隣接していると不可能です.そうでなければ $4$ 種のときと同様にできます.

C. Match Points

マッチングをペア $(l,r)$ として,区間 $[l_1,r_1]$ と $[l_2,r_2]$ が交わらないものや包含するものがあれば適当なスワップを繰り替えす処理を考えると,最適解であって $l_1<l_2<\cdots <l_K<r_1<r_2<\cdots<r_K$ となるものがあると分かります.結局左端からいくつかと右端からいくつかをとることになって,あとは二分探索で最適化できます.

D. 0-1-Tree

パスの辺の種類の切り替わりのところを考えると,結局同じ $v$ から出る色 $0$ のパスと色 $1$ のパスの組を数えればよいことが分かります.始点を固定したときのパスの個数は同一連結成分の頂点数です.

E. Special Segments of Permutation

分割統治します. $2$ つの列 $A,B$ があるときに,それぞれの prefix の和が good かどうかを調べます.max が $A$ 側からとられると仮定します.

$A$ の要素数を決めると $B$ の最大要素数,$p_l, \max p$ が決まります.あとは $p_r$ が対象の $B$ の prefix になっているかを調べます.

F. Card Bag

$x=y$ を固定して数えることを考えると,prefix に置ける減少列の個数を長さごとに求めたいとなります.減少列の長さごとに,「末尾が $x$ より大きな単調減少列(カード列)の個数」を $x$ について降順に dp していきます.

G. Optimizer

等価な変数が複数作られている可能性があるので注意します.途中で出現している変数を適当にハッシュしておくのが簡単でしょうか.あとは,最後の状態にいたるために必要なノードを全部集めてくればよいです.

基本的には実装するだけですがなかなか大変だと思います.

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