食物

题目:
B Z O J 3028 BZOJ3028 BZOJ3028

一个人要带 n n n个物品,共有 8 8 8种物品,每种的限制分别如下:偶数个, 0 0 0 1 1 1个, 0 0 0 1 1 1 2 2 2个,奇数个, 4 4 4的倍数个, 0 0 0 1 1 1 2 2 2 3 3 3个, 0 0 0 1 1 1个, 3 3 3的倍数个。求方案数。

思路:
对每个物品构造生成函数,然后相乘
1 1 − x 2 ∗ ( 1 + x ) ∗ 1 − x 3 1 − x ∗ x 1 − x 2 ∗ 1 1 − x 4 1 − x 4 1 − x ∗ ( 1 + x ) ∗ 1 1 − x 3 = x ( 1 − x ) 4 \begin{aligned} &\frac{1}{1-x^2}*(1+x)*\frac{1-x^3}{1-x}*\frac{x}{1-x^2}*\frac{1}{1-x^4}\frac{1-x^4}{1-x}*(1+x)*\frac{1}{1-x^3}\\ =&\frac{x}{(1-x)^4} \end{aligned} =1x21(1+x)1x1x31x2x1x411x1x4(1+x)1x31(1x)4x
答案就是 [ x n ] x ( 1 − x ) 4 [x^n]\frac{x}{(1-x)^4} [xn](1x)4x
第一种方法:
x ( 1 − x ) 4 = x ( 1 + x + x 2 + . . . ) 4 \frac{x}{(1-x)^4}=x(1+x+x^2+...)^4 (1x)4x=x(1+x+x2+...)4
根据组合数学, x n x^n xn的系数就是 ( n + 2 3 ) {n+2\choose 3} (3n+2)

第二种方法:
泰勒展开
F ( x ) = ∑ i = 0 ∞ F i ( 0 ) i ! x i \begin{aligned} F(x)=\sum_{i=0}^{\infty}\frac{F^i(0)}{i!}x^i\\ \end{aligned} F(x)=i=0i!Fi(0)xi
根据莱布尼茨公式求导
( f ∗ g ) ( i ) = ∑ j = 0 i ( i j ) f ( j ) g ( i − j ) (f*g)^{(i)}=\sum_{j=0}^{i}{i\choose j}f^{(j)}g^{(i-j)} (fg)(i)=j=0i(ji)f(j)g(ij)
所以就等于
1 n ! ∑ j = 0 n ( n j ) f ( j ) ( 0 ) g ( n − j ) ( 0 ) = n n ! g ( n − 1 ) ( 0 ) = n ( n + 1 ) ( n + 2 ) 6 \begin{aligned} &\frac{1}{n!}\sum_{j=0}^{n}{n\choose j}f^{(j)}(0)g^{(n-j)}(0)&\\ =&\frac{n}{n!}g^{(n-1)}(0)=\frac{n(n+1)(n+2)}{6} \end{aligned} =n!1j=0n(jn)f(j)(0)g(nj)(0)n!ng(n1)(0)=6n(n+1)(n+2)

第三种方法:
直接用广义二项式定理展开
1 ( 1 − z ) n = ∑ i = 0 ∞ ( n + i − 1 i ) z i \frac{1}{(1-z)^n}=\sum_{i=0}^{\infty}{n+i-1\choose i}z^i (1z)n1=i=0(in+i1)zi

©️2020 CSDN 皮肤主题: 1024 设计师:上身试试 返回首页