生成函数的背包计数问题

鏼爷的冬令营课件

生成函数的背包计数问题

核猩公式

[ln (1+x)=x-frac{1}{2}x^2+frac{1}{3}x^3-frac{1}{4}x^4+... ]

版本1

[egin{aligned} prod_{i=1}^{n}(1+x^i+x^{2i}+...)^{a_i}=&prod_{i=1}^{n}(frac{1}{1-x^i})^{a_i}\ =&exp(sum_{i=1}^{n}-a_iln(1-x^i))\ =&exp(sum_{i=1}^{n}a_isum_{j=1}^{+infty}frac{x^{ij}}{j}) (其实感觉推到这步就能做了的说)\ =&exp(sum_{j=1}^{+infty}frac{1}{j}sum_{i=1}^{n}a_ix^{ij})\ =&exp(sum_{j=1}^{+infty}frac{1}{j}A(x^j)) end{aligned} ]

可以(A(x))有用的项一共只有(sum_{i=1}^{n}lfloorfrac{n}{i} floor=O(n log n))项。

版本2

[egin{aligned} prod_{i=1}^{n}(1+x^i)^{a_i}=&exp(sum_{i=1}^{n}a_iln(1+x^i))\ =&exp(sum_{i=1}^{n}a_isum_{j=1}^{+infty}(-1)^{j+1}frac{x^{ij}}{j})\ =&exp(sum_{j=1}^{+infty}frac{(-1)^{j+1}}{j}sum_{i=1}^{n}a_ix^{ij})\ =&exp(sum_{j=1}^{+infty}frac{(-1)^{j+1}}{j}A(x^j)) end{aligned} ]

版本3

[egin{aligned} prod_{i=1}^{n}(1+x^i+x^{2i}+...+x^{a_ii})=&prod_{i=1}^{n}frac{1-x^{a_ii}}{1-x^i}\ =&exp(sum_{i=1}^{n}(ln(1-x^{a_ii})-ln(1-x^i)))\ =&exp(sum_{i=1}^{n}(sum_{j=1}^{+infty}frac{x^{ij}}{j})-(sum_{j=1}^{+infty}frac{x^{a_iij}}{j})) end{aligned} ]