do_while_true

一言(ヒトコト)

「题解」ABC241Ex Card Deck Score

青蛙:最喜欢的一集

没有 \(b_i\) 怎么做?

答案是 \([x^m]\prod\frac{1}{1-a_ix}\),我们知道它可以分解为 \(\sum\frac{R_i}{1-a_ix}\),其中 \(R_i\) 是一个常数。具体构造就是上面 EI 的 blog,和中国剩余定理极其类似。

那么 \(R_i=\frac{1-a_ix}{\prod_j(1-a_jx)}\bmod (1-a_ix)\),将 \(x=\frac{1}{a_i}\)(使得后面模掉的多项式值为 \(0\)\(x\))代入到 \(\frac{1-a_ix}{\prod_j(1-a_jx)}\) 就是 \(R_i\)(感谢 vuq 里 crashed 的教导 /kel)

求出 \(R_i\) 之后 \([x^m]\frac{R_i}{1-a_ix}=\sum R_i{a_i}^m\) 便可用快速幂算出。

现在没有 \(b_i\) 的限制时我们会 \(\mathcal{O}(n^2)\) 计算了。

如果有 \(b_i\) 的限制,暴力容斥一个集合 \(S\) 内的 \(b_i\) 是爆的,然后 \(\mathcal{O}(n^2)\) 计算,就是 \(\mathcal{O}(2^nn^2)\) 的复杂度。这里也可以理解为将答案 \([x^m]\prod\frac{1-{a_i}^{b[i]+1}x^{b[i]+1}}{1-a_ix}\) 这个多项式的分子暴力展开再对每一项单独计算。

posted @ 2023-05-11 23:18  do_while_true  阅读(35)  评论(0编辑  收藏  举报