P4389 付公主的背包

非常好的 \(exp\) 优化背包

首先背包不可优化。

考虑先求出 \(\ln (\prod_{i=1}^{n} 1 - x^{p_i})\),再 \(exp\) 还原多项式即可。

又可知上述式子可被化为 $\sum_{i=1}^{n} \ln (1-x^{p_i}) $,然后就是一个很妙但好像很典的东西:

\[\ln (1-x) = \sum_{i=1} \frac{x^i}{i} \]

如何得到?

\(F(x) = \ln (1-x)\),考虑求出 \(F(1)(x) = (1-x)^{-1}\)\(F(2)(x) = (1-x)^{-2}\)\(F(3)(x) = 2(1-x)^{-3}\)

所以 \(F(k)(x) = (k-1)!(1-x)^{-k}\)

\(0\) 点处泰勒展开:

\[\sum_{i=0} \frac{F(i)(0)}{i!} =0 + \sum_{i=1} \frac{(i-1)!1^{-i} x^i}{i!} = \sum_{i=1} \frac{x^i}{i} \]

对于 \(\ln (1-x^{y})\) 同理,可得 \(\ln (1-x) =\sum_{i=1} \frac{x^{iy}}{i}\)

所以相当于对 \(y\) 的倍数(\(iy\))加上 \(\frac{1}{i}\),这个直接调和级数,复杂度是 \(O(nlogn)\)
然后套个 \(exp\) 板子即可。

posted @ 2024-12-04 15:37  ~Cyan~  阅读(1)  评论(0编辑  收藏  举报