学生の時ほどプログラミングコンテストにかける時間が取れなくなった。三角形の足し算と引き算で各々の面積が求まる。各国同士の年号のズレの許容範囲をヒントを元に更新。パターン数は多くなく、全列挙できるレベル。うまい実装の仕方を見つけたい。実験すると有効解が少ないことに気づく。石を置くとゲームが2つの独立した状態に分かれる。少なくともひとつは区間Lの水を受ける。文字が被るwのパターンは少ないことを利用する。0から順番に入れていく。木Aと木Bから頂点を2つずつ選ぶと閉路が定まる。区間で考えるとうまくいく。ゲームの状態は(位置,今いるy座標での壁の区間)で表せる。現在考えている位置の2つ前までの狼まで覚えておけばいい。若干反則臭いがBitSet使ってO(N^3)でACできた。黒マスからは片方ずつに手が伸びる形になる。実装するだけだが制限時間が厳しいビット演算やループの展開などを利用して高速化を図る。iの石を取ると倍数の石も取る。[0,i)までの区間でj個穴を覆う時の最小コスト次に使う区間はn通りを試せば十分。各頂点を根にして木を再構築する。2つ目の配置の影響はその頂点と根の間にしか発生しないためどこに置けば反転を多く解消できるか適当にDPする。2つのギアの色の回転方向が同じと考え、2部グラフを作る。文字の種類数が最大で同じ文字が連続する。答えを決め打ちして二分探索。大きい方を小さい方に足すことを繰り返せばOK。第二問(550点)カウンター296926。