320.1

普通に考えて250が一番難しいセット。間違いやすいという意味でも。

250

二つの数が階乗を複数個含む形式で与えられるので、どちらが大きいか判定せよ、という問題。


階乗の数がたくさんある場合は削る。ただし0の階乗は1なのでその補正を入れる。後は階乗がたくさんついている方を展開して、大きくなったところで打ち切り。BigIntegerが必要。

500

イベントの開始時刻と終了時刻と、参加した時に得られるスコアが与えられるので、スコアの最大値を答えよ、という問題。


終了時刻順にソートしてDPするだけ。

1000

N*M列の席があるので、中の悪いK人がいずれも隣接しないように座る方法は何通りあるか答えよ、という問題。


N*Mが80程度なので、小さい方は8以下。一列ずつ、直前の列との競合をチェックしながら、競合しないように並べていけばいいだけなので、そのDPをやる。