487.1

久し振り過ぎたので、ほとんど検証しないでサクサク投げたら、サクサク落ちた日。

250

長さNの配列から、i番目とi+K番目を取り除く、という操作をできるだけ多くやって、取り除いた要素の値の合計を最大にしたい、という問題。


法Kごとにグループ分けして、偶数個なら全部拾えて、奇数個なら、偶数番目のどれか一個を残す。グループ分けした後DP回す方が安心だけど。

550

K色の色でM個のものが塗れるかどうか判定したい。ただし隣接するものは別の色にするのと、同じ色にしたいものの番号が与えられる。


同じ色にしたいものとその前後だけ考慮して、K色の塗り分けが可能か判定すれば良さそう。Kがある程度大きければ問題なく塗れるけど、そのKは3ではなかった...。

950

ある数をMの倍数ならMで割り、そうでなければ1増やすという処理をN回やったときに初めて1になるものの数を求めよ、という問題。


1から逆に計算していく。Mを一度掛けてしまえば、もう1に戻ることは起こり得ないので、Mで割った余りだけ考えれば良い。これらは1ずつシフトされていくので、長めの配列に入れておいて、合計値と、端っこの出入りだけを考える。Mをかける前も同様に覚えておくが、これは1個だけで、2から1になることがないように注意する。