Educational Codeforces Round 29

スポンサーリンク

A. Quasi-palindrome

末尾の 0 を可能な限り削除したあとで回文判定.

B. Kayaking

1 人組にする 2 人の組み合わせを全部試します.

C. 1-2-3

$9$ 頂点の functional graph をたくさん進むということになります.binary lifting でもよいし周期性を見つけてもよいです.

D. Yet Another Array Queries Problem

お好みの平衡二分木で.

E. Turn Off The TV

座圧したあと各場所が被覆されている回数を求めます.区間 min が $2$ 以上であるような区間が答えるものになります.

F. Almost Permutation

フローで定式化します.各インデックスに対してひとつ値を対応させるので,

  • 左側にインデックスに対応する $N$ 頂点を置き,source から 1 ずつ流す
  • 右側に値に対応する $N$ 頂点を置き,$a[i]=j$ とすることが valid ならば left(i) から right(j) に辺を張ります.

あとは cnt(i) の 2 乗和を費用としたいので,これは右側頂点から sink に向かって費用 $1, 3, 5, \ldots$ の辺を張ればよいです.

G. Graphic Settings

$1$ 次元の場合は例外.以下 $2$ 次元以上を仮定します.

結論としてセルの個数が奇数の場合,サイクルは作れません.パスを作れることと始点の parity が適切であることは同値になります.セグの個数が偶数の場合はサイクルが作れます.

$2$ 次元の場合は頑張って解いておきます.$3$ 次元以上として,次元を下げて解くことを考えます.いくつか場合分けがありますが,主要なアイデアだけ説明します.

最後の軸が偶数であるとして,サイクルを作ります.適当な方法で手前 $n-1$ 次元分をパスにします.これは始点終点はどこでもよいです.手前 $n-1$ 次元分の軸の積を $m$ とすると,手前 $n-1$ 次元分の座標が $0$ 以上 $m-1$ 以下の整数と対応できて,差が $1$ であるような整数と対応する $2$ つのセルは隣接しています.手前 $n-1$ 次元分の座標をこれら $0, \ldots, m-1$ と見なして $2$ 次元のグリッドとしてサイクルを作ればよいです.

すべての軸が奇数のときも同じアイデアを適切に用いると上手くいきます.

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