Polynomial_Count
基本是复读 cmd 的博客。。。因为这玩意我一点不会。。。所以大概算是学习笔记。。。
虽然 Jwz 和我说这玩意不太可能考,但我可能这辈子就学这么一次。。。
前置:基础基础基础多项式基础工业(这是一篇连 MTT 都没有的屑工业博文)。
深必的东西:
- 广义二项式系数,当 $n\in \mathbb{R}$,$m\in \mathbb{N}$ 时,有:
$$\binom{n}{m}=\dfrac{n!}{m!(n-m)!}=\dfrac{n(n-1)\cdots (n-m+1)}{m!}$$
- 广义二项式定理,当 $a\in \mathbb{R}$ 时:
$$(1+x)^a=\sum_{i=0}^{\infty}\binom{a}{i}x^i$$
- 恒等式:
$$\binom{n}{k}=\binom{n}{n-k}$$
$$\binom{n}{k}=(-1)^k\binom{k-n-1}{k}$$
一、生成函数引入
斐波那契数列的生成函数:
斐波那契数列定义 $f_0=0,f_1=1$。
$$F(x)=x+xF(x)+x^2F(x)$$
$$F(x)=\dfrac{x}{1-x-x^2}$$
1 元,2 元,5 元支付 $n$ 元的方案数:
$$F_1(x)=1+x+x^2+\cdots=\dfrac{1}{1-x}$$
$$F_2(x)=1+x^2+x^4+\cdots=\dfrac{1}{1-x^2}$$
$$F_5(x)=1+x^5+x^{10}+\cdots=\dfrac{1}{1-x^{10}}$$
$$G(x)=F_1(x)F_2(x)F_5(x)$$
生成函数分析计数问题的步骤:先将问题用生成函数刻画,再用处理幂级数的技巧得到答案。
二、轻量级推导
已知系数的若干幂级数:
- $\langle 1, 1,1,\cdots\rangle$ 的生成函数是 $\dfrac{1}{1-x}$
- $\langle 1,a,a^2,\cdots\rangle$ 的生成函数是 $\dfrac{1}{1-ax}$
- $F(x)=1+x^k+(x^k)^2+\cdots=\dfrac{1}{1-x^k}$
- $F(x)=1+cx^k+(cx^k)^2+\cdots=\dfrac{1}{1-cx^k}$
- $\langle \binom{n}{0},\binom{n}{1},\binom{n}{2},\cdots\rangle$ 的生成函数是 $(1+x)^n$(广义二项式定理)
- $\langle \binom{n}{0},-\binom{n}{1},\binom{n}{2},\cdots\rangle$ 的生成函数是 $(1-x)^n$(把上面那个 $x$ 变成 $-x$)
- $\langle\binom{n}{0},\binom{n+1}{1},\binom{n+2}{2},\cdots\rangle$ 的生成函数是 $(1-x)^{-n-1}$(用上面的恒等式)
我们要做的就是通过封闭形式反推回数列。
斐波那契数列(生成函数求通项):
$$F(x)=\dfrac{x}{1-x-x^2}$$
我们知道这是个常系数齐次递推,所以很显然最后的通项会是指数求和的形式,而我们又知道 $\dfrac{1}{1-cx^k}$ 这个东西,所以我们想办法往上面靠。
裂项裂项裂项(根据二次):
$$\dfrac{1}{1-x-x^2}=\dfrac{A}{1-\alpha x}+\dfrac{B}{1-\beta x}$$
有方程:
$$(1-\alpha x)(1-\beta x)=1-x-x^2$$
得到:
$$\alpha=\dfrac{1+\sqrt{5}}{2},\beta=\dfrac{1-\sqrt{5}}{2}$$
又有方程:
$$A(1-\beta x)+B(1-\alpha x)=x$$
解得:
$$A=\dfrac{\sqrt{5}}{5},B=-\dfrac{\sqrt{5}}{5}$$
代回去:
$$F(x)=\dfrac{x}{1-x-x^2}=\dfrac{\sqrt{5}}{5}(\dfrac{1}{1-\frac{1+\sqrt{5}}{2}x}-\dfrac{1}{1-\frac{1-\sqrt{5}}{2}x})$$
拆回幂级数的形式:
$$\begin{aligned}F(x)=\dfrac{\sqrt{5}}{5}[(1+\dfrac{1+\sqrt{5}}{2}x+(\dfrac{1+\sqrt{5}}{2})^2x^2+\cdots)
\\
+(1+\dfrac{1-\sqrt{5}}{2}x+(\dfrac{1-\sqrt{5}}{2})^2x^2+\cdots)]\end{aligned}$$这岂不是显然的不能再显然了???
$$f_n=\dfrac{\sqrt{5}}{5}[(\dfrac{1+\sqrt{5}}{2})^n-(\dfrac{1-\sqrt{5}}{2})^n]$$
深必应用:求 $\sum_{i=1}^nf_i^k$,随便推推就能得到 $r^k\sum_{j=0}^k\binom{k}{j}\sum_{i=1}^n(a^jb^jb^{-k})^i$(其中 $r=\dfrac{\sqrt{5}}{5}$,$a=\alpha$,$b=\beta$)。
特征方程(求解常系数齐次递推,隔壁 MO 一般解二阶,因为阶数一高就要求高阶方程了)
和生成函数关系不大,但是 MO 的用了都说好!
求解这玩意和求解微分方程非常相似!
但我们先鸽掉这种理解!(咕咕咕)
定理:
对于常系数齐次递推 $h_n=a_1h_{n-1}+\cdots+a_kh_{n-k}$($a_k\not=0$,$n\ge k$),其特征方程为:
$$x^k-a_1x^{k-1}-a_2x^{k-2}-\cdots-a_k=0$$
若该多项式方程有 $k$ 个不同的根 $q_1,q_2,\cdots,q_k$,则:
$$h_n=c_1q_1^n+c_2q_2^n+\cdots+c_kq_k^n$$
无论给定怎样的初始数列 $h_1,h_2,\cdots,h_{k-1}$,都存在常数 $c_1,c_2,\cdots,c_k$,且数列唯一。
特征方程的 $k$ 个根称为特征根,通项成立的条件是特征根互不相同。
想要证明这个定理需要用到线性代数的一些知识,详细证明可以参考《组合数学》。(咕不咕?咕哉,咕哉。)
更常见的二阶情况,譬如:
已知 $f_0$,$f_1$,求解 $f_n=af_{n-1}+bf_{n-2}$ 的通项。
根据上面的定理,我们可以得到特征方程:
$$x^2-ax-b=0$$
其特征根为:
$$q_1=\dfrac{a+\sqrt{a^2+4b}}{2},q_2=\dfrac{a-\sqrt{a^2+4b}}{2}$$
则有:
$$f_n=c_1q_1^n+c_2q_2^n$$
代入 $n=0$ 和 $n=1$ 的情况把 $c_1$ 与 $c_2$ 解出来,然后就能得到通项啦!
构造幂级数技巧:
- 平移:$[x^n]x^tF(x)=f_{n-t}$
- 拉伸:$F(x^k)$(会在中间空出来 $k-1$ 个 0)
生成函数封闭形式的获取:
已知数列 ${f}$ 和递推系数 ${c}$,容易知道在常系数齐次递推下它能满足:$\sum_{i=0}^kc_if_{n-i}=0$(就是特征方程)。
设 $F(x)$ 为 ${f}$ 的生成函数。
考虑使用递推式凑出次数到达 $k$ 的部分。
构造生成函数:
$$F_t(x)=c_tx^t(F(x)-\sum_{i=0}^{k-t-1}f_ix^i)$$
易知 $[x^n]F_t(x)=c_tf_{n-t}$,这恰好是定义式所需要的(这里对于任意 $n\ge k$)。
很显然 $\sum_{i=0}^kc_if_{n-i}=0$(同样对于任意 $n\ge k$),于是就有了 $\sum_{i=0}^kF_t(x)=0$,即:
$$\sum_{t=0}^kc_tx^t(F(x)-\sum_{i=0}^{k-t-1}f_ix^i)=0$$
移项:
$$(\sum_{t=0}^kc_tx_t)F(x)=\sum_{t=0}^k(c_tx^t\sum_{i=0}^{k-t-1}f_ix^i)$$
左边有 ${c}$ 的生成函数,设为 $C(x)$,右边的余项次数小于 $k$,设为 $P(x)$。
即 $C(x)F(x)=P(x)$,即 $F(x)=\dfrac{P(x)}{C(x)}$。(已经得到了封闭形式)
分式分解
求形如 $F(x)=\dfrac{P(x)}{C(x)}$ 的系数的通项。
所以谁会一般的分式分解啊???
找出 $k$,$p$,使得 $C(x)\mid (1-x^k)^p$,记 $A(x)=\dfrac{(1-x^k)^p}{C(x)}$。
则 $F(x)=\dfrac{A(x)P(x)}{(1-x^k)^p}$。
例子:求 $F(x)=\dfrac{1}{(1-x)(1-x^2)(1-x^5)}$ 的系数。
因为 $(1-x)(1-x^2)(1-x^5)\mid (1-x^{10})^3$(我也不知道怎么找的):
$$\begin{aligned}A(x)&=\dfrac{(1-x^{10})^3}{(1-x)(1-x^2)(1-x^5)}\\ &=
x^{22}+x^{21}+2x^{20}+2x^{19}+3x^{18}+4x^{17}+5x^{16}\\
& +6x^{15}+7x^{14}+8x^{13}+7x^{12}+8x^{11}\\
&+7x^{10}+8x^9+7x^8+6x^7+5x^6\\ &+4x^5+3x^4+2x^3+2x^2+x+1
\end{aligned}$$然后有:
$$f_n=[x^n]\dfrac{A(x)}{(1-x^{10})^3}=\sum_{i+j=n}a_i[x^j]\dfrac{1}{(1-x^{10})^3}$$
注意到 $[x^n]\dfrac{1}{(1-x^c)^k}=[c\mid n]\dbinom{n/c+k-1}{n/c}$,所以:
$$f_n=\sum_{i=0}^{22}a_i[10\mid (n-i)]\dbinom{(n-i)/10+2}{(n-i)/10}$$
卡塔兰数
定义 $c_0=1$,$c_n$ 表示 $n$ 对括号的合法序列数($n>1$)。
容易得到递推式:
$$c_{n+1}=\sum_{i=0}^nc_ic_{n-i}$$
组合理解这东西:第 $n+1$ 对括号放在前面,把剩下 $n$ 堆括号分成两份,一份放在第 $n+1$ 对括号里,另外一份放在其右边。
这个式子 $O(n^2)$ 不多说了。
这玩意贼像卷积,我们拿 Catalan 数的生成函数自卷一下:
$$[x^n]C^2(x)=\sum_{i=0}^nc_ic_{n-i}=c_{n+1}$$
相当于系数整体左移,也就是说 $C^2(x)=\dfrac{C(x)-1}{x}$。
解出来 $C(x)=\dfrac{1\pm\sqrt{1-4x}}{2x}$。
关于根的取舍:
显然 $\lim_{x\rightarrow 0} C(x)=c_0=1$,然而取正号时是 $C(x)=\infty$,取符号时 $C(x)=1$(洛必达)(二者是等量无穷小,收敛)。
数列如果存在必然会有一根正确,一般情况下把错的给舍弃掉就完事了。
所以:
$$C(x)=\dfrac{1-\sqrt{1-4x}}{2x}$$
由广义二项式定理:
$$\begin{aligned}\sqrt{1-4x}&=(1-4x)^{\frac{1}{2}}\\
&= \sum_{i=0}^{\infty}\binom{\frac{1}{2}}{i}(-4x)^i\\
&= 1+\sum_{i\ge 1}\dfrac{\frac{1}{2}\times (-\frac{1}{2})\times\cdots \times(\frac{3-2i}{2})}{i!}(-4x)^i\\
&= 1+\sum_{i\ge 1}(-1)^{i-1}\dfrac{1\times 3\times 5\times\cdots\times (2i-3)}{2^ii!}(-4x)^i\\
&=1-\sum_{i\ge 1}\dfrac{1\times 3\times 5\times \cdots\times (2i-3)}{i!}(2x)^i\\
&=1-\sum_{i\ge 1}\dfrac{1\times 2\times 3\times\cdots \times (2i-3)\times (2i-2)}{2\times 4\times \cdots\times (2i-2)\times i!}(2x)^i\\
&= 1-\sum_{i\ge 1}\dfrac{(2i-2)!}{(i-1)!i!2^{i-1}}(2x)^i\\
&= 1-2\sum_{i\ge 1}\dfrac{(2i-2)!}{(i-1)!i!}x^i\end{aligned}$$代入 $C(x)$,则有:
$$\begin{aligned}C(x)&=\dfrac{1}{2x}(2\sum_{n\ge 1}\dfrac{(2n-2)!}{(n-1)!n!}x^n)\\
&=\sum_{n\ge 1}\dfrac{(2n-2)!}{(n-1)!n!}x^{n-1}\\
&=\sum_{n\ge 0}\dfrac{(2n)!}{n!(n+1)!}x^n\\
&=\sum_{n\ge 0}\dfrac{\binom{2n}{n}}{n+1}x^n\end{aligned}$$于是就有了熟悉的:
$$c_n=\dfrac{1}{n+1}\binom{2n}{n}$$
前缀和
如 ${f}$ 的前缀和 ${s}$,我们有 $s_n=\sum_{i=0}^nf_i$。
那么对于 ${s}$ 的生成函数:
$$\begin{aligned}
S(x)
&=\sum_{n\ge 0}s_nx^n
\\
&=\sum_{n\ge 0}(\sum_{i=0}^nf_i)x^n
\\
&= \sum_{i\ge 0}f_i\sum_{n\ge i}x^n
\\
&=\sum_{i\ge 0}f_i\dfrac{x_i}{1-x}\\
&=\dfrac{1}{1-x}\sum_{i\ge 0}f_ix^i
\\
&= \dfrac{1}{1-x}F(x)
\end{aligned}$$因此,要求一个数列前缀和的生成函数,将其生成函数乘上 $(1-x)^{-1}$ 即可。
P4921 [MtOI2018]情侣?给我烧了!
一个排列计数问题:对 $[1,n]$ 内的整数进行排列,满足相差 1 的数不会相邻,问方案数。
咕。这个不会。。。
三、生成函数组合计数初步
组合对象指满足某些性质的可数对象,组合对象组成的集合称为组合类。
对于组合类 $\mathcal{A}$,其中每个对象 $a\in \mathcal{A}$,都被定义了一个“大小” $|a|$,可能代表节点个数,串长等。
将所有大小为 $n$ 的计数对象记作 $\mathcal{A_n}$。
定义计数序列 $a_n=|\mathcal{A_n}|$,即大小为 $n$ 的组合对象的总数目,通常有限。
我们的任务通常是求出 $a_n$。
约定使用字母 $\mathcal{ABCDEFG}$($\LaTeX$ 下的 \mathcal{}
)表示组合类。
笛卡尔积
定义 ${(a_1,a_2,\cdots,a_n)\mid a_1\in A_1,a_2\in A_2,\cdots,a_n\in A_n}$ 为集合 $A_1,A_2,\cdots,A_n$ 的笛卡尔积,记作 $A_1\times A_2\times \cdots \times A_n$。
满足性质 $|A\times B|=|A|\times|B|$,即乘法原理。
对于组合对象 $a$,$b$ 的组合 $(a,b)$,定义 $|(a,b)|=|a|+|b|$。
OGF
给出两个比较显然的经典 OGF:
- $\langle 0,1,\dfrac{1}{2},\dfrac{1}{3},\cdots\rangle$ 的 OGF 是 $\ln \dfrac{1}{1-x}=-\ln(1-x)$
- $\langle 1,1,\dfrac{1}{1!},\dfrac{1}{2!},\cdots\rangle$ 的 OGF 是 $e^x$
下面是组合意义:
加法代表不相交集合的并:若有组合类 $\mathcal{A}$,$\mathcal{B}$,令 $\mathcal{D}=\mathcal{A}\times \mathcal{B}$,即笛卡尔积。
然后它满足加法卷积,所以我们可以知道 $D(x)=A(x)B(x)$。
实际上它就是计数背包的形式。
例一:P2000 拯救世界
- 加法卷积,但是要 NTT
例二:UVA12298 Super Poker II
刘汝佳书上(可能是唯一的)FFT 练习题
加法卷积,和上面的差不多,因为都是在处理背包
例三:P4551 [国家集训队]整数的lqp拆分
不会
可以找到答案序列的生成函数:$F(x)=\dfrac{x}{1-x-x^2}$,$G(x)=\sum_{m=0}F^m(x)=\dfrac{1}{1-F(x)}$。部分分可以直接全家桶艹上去。
例四:CF438E The Child and Binary Tree
- 从 DP 到生成函数
例五:CF917D Stranger Trees
- 不会
例六:P4389 付公主的背包
乘积用 $\ln$ 转换为加法再 $\exp$ 回去的自然思路
经典无标号计数
EGF
定义 ${f}$ 的 EGF 是:
$$F(x)=\sum_{i=0}^{\infty}f_i\dfrac{x^i}{i!}$$
定义两个 EGF 的乘积为二项卷积(并非严谨名称),满足:
$$(f*g)(k)=\sum_{i+j=k}\binom{k}{i}f_ig_j$$
其实非常显然:
$$\dfrac{(f*g)(k)}{k!}=\sum_{i+j=k}\dfrac{f_i}{i!}\dfrac{g_j}{j!}$$
显然 $j=k-i$:
$$(f*g)(k)=\sum_{i+j=k}\dfrac{k!}{i!(k-i)!}f_ig_j=\sum_{i+j=k}\binom{k}{i}f_ig_j$$
常见 EGF:
$\langle 1,1,1\cdots \rangle$ 的 EGF 是 $e^x$
$\langle 1,-1,1,-1,\cdots\rangle$ 的 EGF 是 $e^{-x}$
$\langle 1,c,c^2,c^3\cdots\rangle$ 的 EGF 是 $e^{cx}$
$\langle 1,0,1,0,1\cdots\rangle$ 的 EGF 是 $\dfrac{e^x+e^{-x}}{2}$(前两个加起来除以 2)
$\langle 1,a,a^{\underline{2}},a^{\underline{3}},\cdots\rangle$ 的 EGF 是 $(1+x)^a$(展开后就是二项式定理的基本形式)
关于组合意义:
不相交集合的并:
仍然有 $\mathcal{C}=\mathcal{A}+\mathcal{B}\Rightarrow C(x)=A(x)+B(x)$。
笛卡尔积(有标号对象的)
例一:染色,红蓝绿涂长度为 $n$ 的纸条,使红色和蓝色的个数都为偶数,求方案数。
绿色的 EGF:$F(x)=e^x$。
红色和蓝色的 EGF 分别为:$G(x)=\dfrac{e^x+e^{-x}}{2}$。
相乘即答案序列 EGF:
$$H(x)=(\dfrac{e^x+e^{-x}}{2})^2e^x=\dfrac{e^{3x}+2e^x+e^{-1}}{4}$$
拆系数得到:
$$h_n=\dfrac{3^n+2+(-1)^n}{4}$$
例二:有 $n$ 种颜色,每种颜色都有可染次数,求染一条长度为 $m$ 的纸带的方案数。
一个 $m$ 次最多的颜色的 EGF:$F(x)=\sum_{i=0}^{m}\dfrac{x^i}{i!}$。
全部乘起来就是答案序列的 EGF。
看不懂,咕了。
PGF
概率生成函数的定义:
$$F(z)=\sum_{i=0}^{\infty}P(X=i)z^i$$
显然 $F(1)=1$。
还有 $E(X)=\sum_{i=0}^{\infty}P(X=i)i=F’(1)$。
进一步扩展就是 $E(x^{\underline{k}})=F^{(k)}(1)$。
看不下去了。。。直接跳过 QAQ。
四、关于二项式
$$\binom{n}{m}=\dfrac{n!}{m!(n-m)!}=\dfrac{n^{\underline{m}}}{m!}$$
对称:$\dbinom{n}{m}=\dbinom{n}{n-m}$
吸收与释放:$\dbinom{n}{m}=\dfrac{n}{m}\dbinom{n-1}{m-1}$
二项式定理:
$$(1+x)^a=\sum_{i=0}^{\infty}\binom{a}{i}x^i$$
递推公式(杨辉三角):
$$\binom{n}{m}=\binom{n-1}{m-1}+\binom{n-1}{m}$$
平行求和:
$$\sum_{i=0}^{n}\binom{r+i}{i}=\binom{r+n+1}{n}$$
证明:前两项之和为
$$\binom{r}{0}+\binom{r+1}{1}=\binom{r+1}{0}+\binom{r+1}{1}=\binom{r+2}{1}$$
然后与 $\binom{r+2}{2}$ 求和:
$$\binom{r+2}{1}+\binom{r+2}{2}=\binom{r+3}{2}$$
以此类推,综上得到结论。
上指标求和:
$$\sum_{i=0}^{n}\binom{i}{m}=\binom{n+1}{m+1}$$
证明:$\binom{m}{m}=\binom{m+1}{m+1}$,与 $\binom{m+1}{m}$ 相加得到 $\binom{m+2}{m+1}$。
剩下的递推与上个证明类似,不作赘述。
范德蒙德卷积:
$F(x)=(1+x)^{n+m}=(1+x)^n(1+x)^m$ 可以导出:
$$f_k=\binom{n+m}{k}=\sum_{i=0}^{k}\binom{n}{i}\binom{m}{k-i}$$
广义二项式系数:
$$\binom{\alpha}{i}=\dfrac{\alpha^{\underline{i}}}{i!}$$