ContestTweetapc001.contest.atcoder.jpPetrozavodskって何だ?というのはさておき。土曜深夜に5時間コンテスト。longにし忘れてWAみたいなのが多かったけど残り5分で5問目を通して5完。(+99)順位表では147なのに142ndなのはなぜだろうパフォーマンスは2216(黄)とな続けて出てれば黄色(2000〜2399かな)までは行ける気がしてきた。(100点)なんか結構悩んだ。XがYで割り切れるなら何を選んでも駄目。割り切れないならXでいいじゃん。正・負・ゼロに分類する。正の項は1つずつ(どこかを2つ増やしながら)減る。負の項は2つずつ(どこかを1つ減らしながら)増えるか、1つだけ(どこにも影響を与えずに)増える。(正の項の数)≦(負の項の数/2)なら行ける。(500点)楽しいインタラクティブ問題。円状に並んだ奇数個の座席(最大99999席)があって、男女が同性で固まらずに(交互または空席をはさんで)座っている。空席が必ず1つあるのは自明だが、どこにあるかを20回クエリを投げる間に1つでも当てれば良いという問題。・席Aと席Bの間に奇数個の席がある場合(B-Aが偶数)、席Aと席Bの人の性別が異なるなら必ずこの区間に空席が1つはある。性別が同じならこの区間の空席の有無は断言できない。・席Aと席Bの間に偶数個の席がある場合(B-Aが奇数)、席Aと席Bの人の性別が同じなら必ずこの区間に空席が1つはある。性別が異なるならこの区間の空席の有無は断言できない。空席があるか、の少なくとも一方は言えるので、二分探索で必ず1つ以上の空席を含む区間を狭めていくことができる。(ここまでのクエリで空席を引いたらその時点で終了する)区間長が3以内になるまでに高々17クエリ。あとはその区間の未クエリ席を総当りしても20クエリに収まる。(600点)まずはunion-findで島分け。各島に含まれる頂点(の値)リストを作り、それぞれ昇順にソートしておく。放り込んで、コストの低いやつ2つをくっつけて、島が1つになるまで続ける。sortで書いてたのをmergeにする。