P4389 付公主的背包
https://www.luogu.com.cn/problem/solution/P4389
经典生成函数问题
求解无限背包问题,我们可以将每个物品看作一个多项式,那么最后的结果就是这些多项式的卷积的系数,然后我们实际上就可以考虑分治NTT了,但是这样做的复杂度是O(nlog2n)O(nlog^2n)O(nlog2n),实际上我们有更好的方法。
因为多项式乘法很慢但是加法很快,所以我们考虑对他们取ln,然后转化为加法,但是直接做ln还是很慢,但是这个式子比较特殊我们考虑推出它的ln,可以发现这个东西的生成函数就是11−xV\frac{1}{1-x^V}1−xV1求ln等价于求ln(1−xV)ln(1-x^V)ln(1−xV)然后考虑求导
这个推导方法很巧妙,将先利用生成函数运算,然后再展开为幂级数,得到我们需要的结果。