320.1
普通に考えて250が一番難しいセット。間違いやすいという意味でも。
250
二つの数が階乗を複数個含む形式で与えられるので、どちらが大きいか判定せよ、という問題。
階乗の数がたくさんある場合は削る。ただし0の階乗は1なのでその補正を入れる。後は階乗がたくさんついている方を展開して、大きくなったところで打ち切り。BigIntegerが必要。
500
イベントの開始時刻と終了時刻と、参加した時に得られるスコアが与えられるので、スコアの最大値を答えよ、という問題。
終了時刻順にソートしてDPするだけ。
1000
N*M列の席があるので、中の悪いK人がいずれも隣接しないように座る方法は何通りあるか答えよ、という問題。
N*Mが80程度なので、小さい方は8以下。一列ずつ、直前の列との競合をチェックしながら、競合しないように並べていけばいいだけなので、そのDPをやる。