普通型生成函数

普通型生成函数

定义

生成函数的本质是,用一个多项式的系数表示一个数列,将数列的组合关系转化为多项式的代数运算。

对于数列 \(\{a_n\}\),其普通型生成函数(OGF)为:

\[A(x) = \sum_{n=0}^{\infty} a_n x^n \]

常见数列的 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\)

加法

\[A(x) + B(x) = \sum_{n=0}^{\infty} (a_n + b_n) x^n \]

乘法(卷积)

\[A(x) \cdot B(x) = \sum_{n=0}^{\infty} \left( \sum_{k=0}^n a_k b_{n-k} \right) x^n \]

从封闭形式还原系数

  • 方法 1:基本公式套用

常用的技巧有:换元法平移法

  • 方法 2:分式分解法

适用于分子分母都是多项式的分式。

步骤:

  1. 将分母因式分解为一次因式的乘积

  2. 设分子为待定常数,将分式分解

  3. 通分后对比分子系数,解出待定常数

  4. 对每个分式套用基础公式,合并得到系数

  • 方法 3:广义二项式定理重要

定理的内容如下:

对于任意实数 \(\alpha\),有

\[(1+x)^{\alpha} = \sum_{n=0}^{\infty} {\alpha \choose n} x^n \]

其广义组合数定义为

\[{\alpha \choose n} = \frac{\alpha (\alpha-1)...(\alpha-n+1)}{n!} \]

  • 方法 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}\)


总结一下,构造生成函数是就是方案数当系数,限制当指数。

posted @ 2026-08-10 15:11  _KidA  阅读(13)  评论(0)    收藏  举报