普通生成函数
应用:从数种物品中选出K
个物品的方案数。
形式幂级数
-
定义
-
简单运算
-
形式幂级数的逆元(封闭形式)
具体推导见:普通生成函数的封闭形式
-
性质:
-
- 1 1 − x = ∑ i ⩾ 0 x i ← ( 1 + x + x 2 + x 3 + . . . ) \frac{1}{1-x} = \sum_{i\geqslant0}x^i\leftarrow(1+x+x^2+x^3+...) 1−x1=∑i⩾0xi←(1+x+x2+x3+...)
-
- 1 1 − a x = ∑ i ⩾ 0 a i x i ← ( 1 + a x + a 2 x 2 + a 3 x 3 + . . . ) \frac{1}{1-ax} = \sum_{i\geqslant0}a^ix^i\leftarrow(1+ax+a^2x^2+a^3x^3+...) 1−ax1=∑i⩾0aixi←(1+ax+a2x2+a3x3+...)
-
- 1 ( 1 − x ) k = ∑ i ⩾ 0 ( i + k − 1 i / ( k − 1 ) ) x i \frac{1}{(1-x)^k} = \sum_{i\geqslant0}\dbinom{i+k-1}{i/(k-1)}x^i (1−x)k1=∑i⩾0(i/(k−1)i+k−1)xi
-
- 1 − x k + 1 1 − x = 1 + x + x 2 + . . . + x k ( 一共是 k + 1 项 ) \frac{1-x^{k+1}}{1-x} = 1+x+x^2+...+ x^k(一共是k+1项) 1−x1−xk+1=1+x+x2+...+xk(一共是k+1项)
第4条参考:1-x^3
-
Catalan数:
n=3时,C(3) = 5
很有可能是卡特兰数!!- 任意前缀0的个数>=1的个数–卡特兰数!!
- 通项公式:
C
(
n
)
=
1
n
+
1
C
(
2
n
,
n
)
C(n) = \frac{1}{n + 1}C(2n, n)
C(n)=n+11C(2n,n)
指数生成函数
- 应用:从数种物品中选出来
k
个物品并排序的方案数。
步骤:
- 先列出每种物品的生成函数 f i ( x ) f_i(x) fi(x),并将其化简为其封闭形式
- 求出 C ( x ) = ∏ i = 1 n f i ( x ) C(x) =\prod_{i=1}^n f_i(x) C(x)=∏i=1nfi(x),将其化简。
- A n s = k ! ∗ [ x k ] C ( x ) = k ! ∗ a k k ! = a k Ans = k! * [x^k]C(x) = k! * \frac{a_k}{k!} =a_k Ans=k!∗[xk]C(x)=k!∗k!ak=ak
- 定义:
- 性质:
-
- e x p ( x ) ∗ e x p ( − x ) = 1 exp(x)*exp(-x)= 1 exp(x)∗exp(−x)=1
-
- e x p ( x ) a = e x p ( a x ) exp(x)^a=exp(ax) exp(x)a=exp(ax)
-
例题:
- 当y关于m的逆元不存在时计算 x y \frac{x}{y} yx:
x/y = [x%(y*m)]/y
reference link: https://www.luogu.com.cn/problem/solution/P6078