yukicoderの過去問 (yukicoder April Fool Contest 2019 G)
形式的冪級数解。
解法(想定解はを定数倍高速化しています)
まずは2次元DPを考える。回移動しての位置にいるときの組み合わせの数 とすると、答えは、 。各移動で最低1マスは進むためだから、そこで計算を打ち切れば計算量はだが、当然TLEする。
配るDPを考えると、遷移は、に足すという操作。
これをFFTを使って高速化したい。そのため、DP配列を多項式と見ることにする。とすると、となる。さらに、なので、がわかる。
このようにDPを多項式に置き換えていくと、解は、のの係数である。
ここで、であるからの逆数が求まれば良い。この解説のE問題のところにある方法を使えば、逆数はで求まるので、でこの問題は解ける。問題はMODがであることだが、これはNTTを使ったり、bit分割するFFTをしたりすれば解決する。
コード
https://yukicoder.me/submissions/334144