Maximum-Cup 2018:D - Many Go Round
問題
https://atcoder.jp/contests/maximum-cup-2018/tasks/maximum_cup_2018_d
考え方
部分和問題に帰着する。 のうちいくつか選んだときにその和の が に等しくなれば良い。 上で考えればよいので DP を回す最大値は 未満まででよい。
そのとき以下のように DP を定義する。
番目まで見たときの にいるときの最小回数
DPの初期値は の場合に で、DP遷移は となる。
Submission #3910219 - Maximum-Cup 2018
どこに着目して考察するべきだったか
で考えて良いので、DPを回す最大値は 未満でよかった。
何がバグっていたか
ビット上で考えうる部分和を列挙したのち、 なる ビット目がたっている場合には YES
そうでない場合は NO
と考えたが、その場合は (たぶんビット演算が重くて) TLE した。
Submission #3909990 - Maximum-Cup 2018
得た知見
mod M 上の最大値は M-1