普通型生成函数
普通型生成函数
定义
生成函数的本质是,用一个多项式的系数表示一个数列,将数列的组合关系转化为多项式的代数运算。
对于数列 \(\{a_n\}\),其普通型生成函数(OGF)为:
常见数列的 OGF(以下列出的均为封闭形式):
-
\(a_n = 1\):\(A(x) = \frac{1}{1-x}\)
-
\(a_n = c^n\):\(A(x) = \frac{1}{1-cx}\)
-
\(a_n = n+1\):\(A(x) = \frac{1}{(1-x)^2}\)
-
\(a_n = {{n+k-1} \choose {k-1}}\):\(A(x) = \frac{1}{(1-x)^k}\)
-
\(F_n\)(斐波那契数列):\(A(x) = \frac{x}{1-x-x^2}\)
-
\(C_n\)(卡特兰数):\(A(x) = \frac{1-\sqrt{1-4x}}{2x}\)
基本运算
令 \(A(x) = \sum a_n x^n,B(x) = \sum b_n x^n\)。
加法:
乘法(卷积):
从封闭形式还原系数
- 方法 1:基本公式套用
常用的技巧有:换元法、 平移法。
- 方法 2:分式分解法
适用于分子分母都是多项式的分式。
步骤:
-
将分母因式分解为一次因式的乘积
-
设分子为待定常数,将分式分解
-
通分后对比分子系数,解出待定常数
-
对每个分式套用基础公式,合并得到系数
- 方法 3:广义二项式定理(重要)
定理的内容如下:
对于任意实数 \(\alpha\),有
其广义组合数定义为
- 方法 4:dp
例题选讲
- P10780 BZOJ3028 食物(生成函数的识别 & 负指数幂的化简)
看到这种多种限制,考虑生成函数。
对于汉堡:\(1+x^2+x^4+... = \frac{1}{1-x^2}\)。
对于可乐:\(1+x\)。
对于鸡腿:\(1+x+x^2\)。
对于蜜桃多:\(x+x^3+x^5+... = x(1+x^2+x^4+...) = \frac{x}{1-x^2}\)。
对于鸡块:\(1+x+x^2+x^3\)。
对于土豆片炒肉:\(1+x\)。
对于面包:\(x^3+x^6+x^9+...=\frac{1}{1-x^3}\)。
相乘,得到 \(ans=\frac{x}{(x-1)^4}\)。
利用基本公式展开(别忘了分子是 \(x\),求和要从 \(1\) 开始),可得系数为 \({k+1 \choose k-2}\)。
总结一下,构造生成函数是就是方案数当系数,限制当指数。
浙公网安备 33010602011771号