Bubble Cup 9 – Finals

スポンサーリンク

A. Festival Organization

c-recursive の累積和も c-recursive なので,小さいところを求めて補間すればよいです.

B. R3D3’s Summer Adventure

やや読解に詰まりましたが,01 列をコストが小さい方から貪欲に $N$ 個とる,コストは文字のコストの和.ということです.

コスト $ia+jb$ のものが $\binom{i+j}{i}$ 個あると思ってもよいです.$j\geq 1$ となる $i$ の範囲は $O(\sqrt{N})$ 程度しかないことから計算できます.

C. Potions Homework

並べ替え不等式で,ソートして逆順に組み合わせるのが最適です.

D. Dexterina’s Lab

xor convolution に関する $n$ 乗です.hadamard 変換は convolution を各点積に変換するので,hadamard 変換したあと $n$ 乗して戻せばよいです.

E. Paint it really, really dark gray

再帰的に subtree を完成させます.ある点では,各方向の subtree を完成させたあと,自身の色がずれていたら親との往復で調整します.根でそうなった場合には子をひとつ選び子を終点とします.

F. Heroes of Making Magic III

始点と終点が決まっているので,列が与えられると順に各区間の左右方向の移動回数が決まっていきます.これがいたるところ右方向に正(右端から右へ進む区間は $0$ 回)であるというのが条件になります.十分性は Eulerian walk の存在です.

計算すると,交代和の min が必要だと分かるのでこれをセグメント木にのせます.

G. Underfail

最小費用流で解けます.

$L$ から $R$ までマッチする文字列があるとき $L$ から $R$ に容量 $1$ の辺を張ります.あとは任意の箇所に $i$ から $i+1$ へ容量 $\infty$ の辺を張ります.この状況で $0$ から $N$ まで流量 $x$ を流せば,各文字が $x$ 回以下しかとられないという状況がフローで表現できます.

H. Pokermon League challenge

平均以上であればよいだけなので,乱択で振り分けてチェックします.平均以上になる確率が $\Ometa(1)$ であるかは証明していないのですが.

I. Cowboy Beblop at his computer

あんまり明示的には書いていないように感じましたが,それぞれの入力は同一平面上です.

問題文の定義通りに,上から下,下から上へ貫通する回数を数えます.

辺同士などは交わらないですが,頂点が他方の平面上に来ることなどはないと言われていなくて,これが実装を面倒にさせると思います.問題設定から座標を eps ずらすことは答を変えなさそうなので,片方の多角形を適当に平行移動して解きました.

空間内で平面と直線の交点をとる程度の計算をすれば,あとは交点が多角形の内部にあるかを調べる問題に帰着できます.今回は交点があるならばそれはすべて $2$ つの平面の交線上にあるので,そんなに難しくないです.

交線と平面 1 の交点を列挙してソートしておき,調べる点がその何番目に来るかを見ていけば内外判定ができます.

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