生成函数
根据牛顿老爷的研究,有广义二项式定理:
\[(ax+b)^{n}=\sum\limits_{k=0}^{+\infty} {n\choose k} (ax)^kp^{n-k}
\]
注意到这里的组合数的定义需要拓展,我们约定 \(m\ge 0,n<m\) 时:
\[{n\choose m}=\dfrac{\prod\limits_{i=n-m+1}^{n} i}{m!}
\]
简单的说,\(m\) 即选择的个数必须时自然数,而 \(n\) 则没有范围限制,只要是整数即可。
进一步的,我们有:
\[{-n\choose m}=(-1)^m {n+m-1\choose n-1}
\]
考虑证明,根据定义易得:
\[{-n\choose m}=\dfrac{\prod\limits_{i=-n-m+1}^{-n} i}{m!}\\
\]
交换一下顺序:
\[(-1)^{-n-(-n-m+1)+1}\dfrac{\prod\limits_{i=n}^{n+m-1}i}{m!}
\]
整理一下得到:
\[(-1)^{m}\dfrac{(n+m-1)!}{(n-1)!m!}=(-1)^{m}{n+m-1\choose n-1}
\]
这就让我们可以把拓展之后的组合转化成我们熟悉的形式。
需要注意的是,网上一些笔记要求 \(n,m\) 之间满足大小关系,这是不必要的,只要同号就行了。
于是现在我们就可以开心的学习生成函数了,对于生成函数在实际的应用某个东西的生成函数 \(f\),满足 \([x^i]f(x)\) 为当选择 \(x\) 个时的方案数。
BZOJ3028 食物
承德汉堡选择偶数个那么其生成函数为:
\[f(x)=\sum\limits_{k=0}^{+\infty} x^{2k}
\]
取 \(1\) 个的方案数 \([x]f(x)=0\),而选 \(2\) 个的方案数 \([x^2]f(x)=1\)。
类似的,我们两边同乘 \(x^2\),那么就得到了:
\[x^2f(x)=\sum\limits_{k=1}^{+\infty} x^{2k}
\]
进一步的,可以得到:
\[x^2f(x)=\sum\limits_{k=0}^{+\infty}x^{2k}-1
\]
即:
\[x^2f(x)=f(x)-1
\]
那么就得到了:
\[f(x)=\dfrac{1}{1-x^2}
\]
那么 \(f(x)=\dfrac{1}{1-x^2}\) 就是生成函数 \(f(x)=\sum\limits_{k=0}^{+\infty} x^{2k}\) 的封闭形式。
对于剩下的情况,我们逐一考虑。
可乐:
\[f(x)=x+1
\]
鸡腿:
\[f(x)=x^2+x+1
\]
蜜桃多:
\[f(x)=\sum\limits_{k=0}^{+\infty} x^{2k+1}=x\sum\limits_{k=0}^{+\infty} x^{2k}=\dfrac{x}{1-x^2}
\]
鸡块:
\[f(x)=\sum\limits_{k=0}^{+\infty} x^{4k}=\dfrac{1}{1-x^4}
\]
包子:
\[f(x)=x^3+x^2+x+1
\]
土豆片炒肉:
\[f(x)=x+1
\]
面包:
\[f(x)=\sum\limits_{k=0}^{+\infty} x^{3k}=\dfrac{1}{1-x^3}
\]
把上面的封闭形式全部乘起来得到:
\[\dfrac{x}{(x-1)^4}=x(x-1)^{-4}
\]
那么根据牛顿老爷的研究,有:
\[x\sum\limits_{k=0}^{+\infty}{-4\choose k}x^k(-1)^{-4-k}
\]
于是我们转化一下得到:
\[x\sum\limits_{k=0}^{+\infty}{k+3\choose 3}(-1)^kx^k(-1)^{-4-k}
\]
整理一下得到:
\[g(x)=x\sum\limits_{k=0}^{+\infty} {k+3\choose k}x^k
\]
于是就得到了答案:
\[[x^n]g(x)={n+3\choose n}
\]
做完了。