387.1

思った以上に大幅に落ちた。
人が少ない日本時間の朝開催。

300

マーブルが複数の箱に複数の数だけ入っている。一つの色は一つの箱に入り、他の色が入らないようにしたい。ただし一つだけ何が入ってもいい箱がある。このときいくつの箱の中身を動かせばこの条件を満たすようにできるか答えよ、という問題。


取り敢えず何種類入っているかをカウントする。複数種類の箱は1つにまとめる必要が必ずあるので、2個以上になったらそれをカウント。一種類の箱の場合は、同一種類の箱が他にある場合はそっちに移すのでカウントする。何を入れてもいい箱がない場合には、一種類しか入っていない箱のうち、動かす必要があるもののどれかを、何も入れてもいい箱とみなす。

500

区間の集合が与えられるので、その部分集合のうち、それらの中では共通部分がないが、使わなかった区間を一つでも加えたときに必ず共通部分ができてしまうものの数を答えよ、という問題。


単純に使うか使わないかでDPすれば良い。使う場合は次に共通部分がないものから処理を再開。使わない場合は、次のを使うかどうか判定。ただし、使わなかったものと共通部分がなくなってしまうくらい使わないものを出してはダメ。

950

配列aと配列bからa[i%a.size]^b[i%b.size]となるようにな無限数列を作る。ただし配列bは使うと1インクリメントされる。このときN番目までの和をある特定の数で割った余りを答えよという問題。


等比数列の和を求める問題を複数回実行すればおしまい。途中で剰余が絡むのと、バイナリにN乗を計算する必要があるだけ。時間さえあれば...、という系統。