斐波那契数列
其实不是特殊计数数列,但是可能出现在题目里.
定义:\(f_0=0,f_1=1,f_n=f_{n-1}+f_{n-2}(n\geq 2)\),生成函数:\(F(x)=\frac{x}{1-x-x^2}\).
通项公式:
\[f_n=\frac{1}{\sqrt 5}\left(\frac{\sqrt 5 +1}{2}\right)^n-\frac{1}{\sqrt 5}\left(\frac{\sqrt 5-1}{2}\right)^n
\]
一些性质:
\(1.\) \(f_n^2-f_{n-1}f_{n+1}=(-1)^{n-1}\).
\(2.\) \(\sum_{i=1}^{n}f_{2i-1}=f_{2n}\).
\(3.\) \(\sum_{i=1}^{n}f_{2i}=f_{2n+1}-1\).
\(4.\) \(\sum_{i=1}^n f_i^2=f_{n}f_{n+1}\).
\(5.\) \(\frac{f_{2n}}{f_n}=f_{n-1}+f_{n+1}\).
\(6.\) \(\sum_{i=1}^n f_i=f_{i+2}-1\).
\(7.\) \(m|n\Rightarrow f_m|f_n\).
\(8.\) \(f_{\gcd(n,m)}=\gcd(f_n,f_m)\)
求第\(n\)项通常可以用矩阵乘法:
\[\begin{bmatrix}
f_{n-1}& f_{n}
\end{bmatrix}
\times
\begin{bmatrix}
0 & 1
\\ 1 & 1
\end{bmatrix}
=\begin{bmatrix}
f_{n}& f_{n+1}
\end{bmatrix}
\]
错位排列
\(d_n\)表示\(n\)个数字错位排列的方案数,则:
\[n!=\sum_{i=0}^n\binom{n}{i}d_i
\]
二项式反演,得到通项公式:
\[d_n=\sum_{i=0}^n(-1)^i\binom{n}{i}(n-i)!=n!\sum_{i=0}^n\frac{(-1)^i}{i!}
\]
两个递推公式:
\[d_n=(n-1)(d_{n-1}+d_{n-2})
\]
证明:
考虑分类讨论,第\(n\)个数字放进去,如果前面所有数字都是错排,那么只需把\(n\)和前面任意一个数字交换即可. 如果前面存在一个数字不是错排,那么必须和他交换.
化简一下上面的式子,可以得到:
\[d_n=n\times d_{n-1}+(-1)^n
\]
卡特兰数列
\[c_i=\begin{cases}1,&i=0\\ \sum_{j=0}^{i-1}c_jc_{i-j-1},&i\geq1\end{cases}
\]
生成函数
\[C(x)=\frac{1\pm\sqrt{1-4x}}{2x}
\]
通项公式
\[c_n=\frac{\binom{2n}{n}}{n+1}=\binom{2n}{n}-\binom{2n}{n-1}
\]
递推式
\[c_n=\frac{4n-2}{n+1}c_{n-1}
\]
常见模型:
\(1.\) 一个足够大的栈的进栈序列为\(1,2,\cdots,n\)时有\(c_n\)个不同的出栈序列.
\(2.\) \(n+1\)个叶子的满二叉树的数量为\(c_n\)(每个节点有\(0/2\)个儿子).
\(3.\) 在\(n\times n\)的方格地图中,从一个角到另一个角,不跨越对角线的路径数为\(c_n\).
\(4.\) 圆周上有\(2n\)个点,以这些点为端点连\(n\)条互不相交的弦,不同的连法总数为\(c_n\).
\(5.\) 凸\(n-2\)边形用其\(n-1\)条对角线分割为互不重叠的三角形的分法总数为\(c_n\).
\(6.\) \(n\)对括号合法的括号序列的方案数为\(c_n\).
格路径计数的结论:
从\((0,0)\)到\((n,m)\)不越过直线\(y=x\)的格路径条数为\(c_n\).
从\((0,0)\)到\((n,m)(n\geq m)\)不越过直线\(y=x\)的格路径条数为\(\binom{n+m}{m}-\binom{n+m}{m-1}\).
斯特林数列
第一类斯特林数:\(\begin{bmatrix}n\\m\end{bmatrix}\)表示把\(n\)个有标号的球分成\(m\)个无标号的非空轮换的方案数.
递推式:
\[\begin{bmatrix}n\\m\end{bmatrix}=\begin{bmatrix}n-1\\m-1\end{bmatrix}+(n-1)\begin{bmatrix}n-1\\m\end{bmatrix}
\]
特殊的值:
\[\begin{bmatrix}n\\0\end{bmatrix}=\begin{cases}1, & n= 0\\ 0, & n >0\end{cases}\ ,\ \begin{bmatrix}n\\1\end{bmatrix}=(n-1)!
\]
第二类斯特林数:\(\begin{Bmatrix}n\\m\end{Bmatrix}\)表示把\(n\)个有标号的球分成\(m\)个无标号的非空集合的方案数.
递推式:
\[\begin{Bmatrix}n\\m\end{Bmatrix}=\begin{Bmatrix}n-1\\m-1\end{Bmatrix}+m\begin{Bmatrix}n-1\\m\end{Bmatrix}
\]
特殊的值:
\[\begin{Bmatrix}n\\0\end{Bmatrix}=\begin{cases}1, & n= 0\\ 0, & n >0\end{cases}\ ,\ \begin{Bmatrix}n\\2\end{Bmatrix}=2^{n-1}-1
\]
第二类斯特林数可以用容斥写出一个通项公式:
\[\begin{Bmatrix}n\\m\end{Bmatrix}=\frac{1}{m!}\sum_{i=0}^m(-1)^i\binom{m}{i}(m-i)^n
\]
更重要的是,我们要认识到计数是双向的:
\[m^n=\sum_{i=0}^m\binom{m}{i}\begin{Bmatrix}n\\i\end{Bmatrix}i!
\]
把\(n\)个球随便放到\(m\)个盒子里(可以空)的方案数,就相当于枚举有多少个盒子非空,用第二类斯特林数计数,再乘上盒子标号的方案数之和.
\[n!=\sum_{i=0}^n\begin{bmatrix} n\\ i \end{bmatrix}
\]
\(n\)个元素排列的方案数,其实也等于枚举置换环个数的方案数之和,也就是第一类斯特林数.
斯特林数和阶乘幂都有很强的联系:
\[m^n=\sum_{i=0}^m\binom{m}{i}\begin{Bmatrix}n\\i\end{Bmatrix}i!=\sum_{i=0}^m\begin{Bmatrix}n\\i\end{Bmatrix}m^{\underline{i}}
\]
我们一般会把求和上界换成\(n\)(当\(n>m\)的时候显然没什么问题,因为这时候二项式系数是\(0\),当\(n<m\)的时候只要枚举到\(n\)即可,因为斯特林数是\(0\)):
\[m^n=\sum_{i=0}^n\begin{Bmatrix}n\\i\end{Bmatrix}m^{\underline{i}}
\]
应用阶乘幂翻转\(m^{\overline{n}}=(-1)^n(-m)^{\underline{n}}\),可以令上式中的\(m=-m\),则:
\[(-m)^n=\sum_{i=0}^n\begin{Bmatrix}n\\i\end{Bmatrix}(-m)^{\underline{i}}
\\ m^n(-1)^n=\sum_{i=0}^n(-1)^i\begin{Bmatrix}n\\i\end{Bmatrix}m^{\overline{i}}
\\ m^n=\sum_{i=0}^n(-1)^{n-i}\begin{Bmatrix}n\\i\end{Bmatrix}m^{\overline{i}}
\]
第一类斯特林数和上升幂也有很强的关系:
\[m^{\overline n}=\sum_{i=0}^n\begin{bmatrix}n\\ i\end{bmatrix}m^i
\]
同样也可以阶乘幂翻转一下,得到:
\[(-m)^{\overline n}=\sum_{i=0}^n(-1)^i \begin{bmatrix}n\\ i\end{bmatrix}m^i
\\ (-1)^nm^{\underline n}=\sum_{i=0}^n(-1)^i \begin{bmatrix}n\\ i\end{bmatrix}m^i
\\ m^{\underline n}=\sum_{i=0}^n(-1)^{n-i} \begin{bmatrix}n\\ i\end{bmatrix}m^i
\]
首先要记住两个基本公式:下降幂通过第二类斯特林数求和得到普通幂,普通幂通过第一类斯特林数求和得到上升幂. 然后剩下的再通过阶乘幂翻转推导即可.
根据斯特林数和阶乘幂之间的关系,我们还可以推导出一个翻转公式:
\[m^n=\sum_{i=0}^n\begin{Bmatrix}n\\i\end{Bmatrix}m^{\underline{i}}=\sum_{i=0}^n\begin{Bmatrix}n\\i\end{Bmatrix}\sum_{j=0}^i(-1)^{i-j}\begin{bmatrix}i\\ j\end{bmatrix} m^j
\\ m^n=\sum_{i=0}^n\sum_{j=0}^i \begin{Bmatrix}n\\ i\end{Bmatrix}\begin{bmatrix}i\\j\end{bmatrix}(-1)^{i-j}m^j
\\ =\sum_{i=0}^n\sum_{j=i}^n \begin{Bmatrix}n\\ j\end{Bmatrix}\begin{bmatrix}j\\ i\end{bmatrix}(-1)^{j-i}m^i
\]
对应项系数相等,就有如下的公式成立:
\[\sum_{j=i}^n \begin{Bmatrix}n\\ j\end{Bmatrix}\begin{bmatrix}j\\ i\end{bmatrix}(-1)^{j-i}=[i=n]
\]
同理可以这样操作一下:
\[m^{\overline n}=\sum_{i=0}^n\begin{bmatrix}n\\ i\end{bmatrix}m^i=\sum_{i=0}^n\begin{bmatrix}n\\ i\end{bmatrix}\sum_{j=0}^i(-1)^{i-j}\begin{Bmatrix}i\\ j\end{Bmatrix}m^{\overline{j}}
\\m^{\overline n}=\sum_{i=0}^n\sum_{j=0}^i\begin{bmatrix}n\\i\end{bmatrix}\begin{Bmatrix}i\\ j\end{Bmatrix} (-1)^{i-j}m^{\overline j}
\\ =\sum_{i=0}^n\sum_{j=i}^n \begin{bmatrix}n\\j\end{bmatrix}\begin{Bmatrix}j\\i\end{Bmatrix}(-1)^{j-i}m^{\overline j}
\]
对应项系数相等,就有如下的公式成立:
\[\sum_{j=i}^n \begin{bmatrix}n\\ j\end{bmatrix}\begin{Bmatrix}j\\ i\end{Bmatrix}(-1)^{j-i}=[i=n]
\]
这两个公式就叫翻转公式,那么接下来就有两个显而易见的反演成立:
\[f(n)=\sum_{i=0}^n\begin{Bmatrix}n\\ i\end{Bmatrix}g(i)\Longleftrightarrow g(n)=\sum_{i=0}^n(-1)^{n-i}\begin{bmatrix}n\\ i\end{bmatrix} f(i)
\\ f(n)=\sum_{i=0}^n\begin{bmatrix}n\\ i\end{bmatrix}g(i)\Longleftrightarrow g(n)=\sum_{i=0}^n(-1)^{n-i}\begin{Bmatrix}n\\ i\end{Bmatrix} f(i)
\]
Bell数列
定义:\(w_n\)表示把\(1\sim n\)的自然数放到若干个无序集合中的方案数.
递推式:
\[w_n=[n=1]+\sum_{i=1}^n\binom{n-1}{i-1}w_{n-i}
=\sum_{i=0}^n \begin{Bmatrix}n\\ i\end{Bmatrix}
\]
生成函数:
\[\hat W(x)=\exp (e^{x}-1)
\]
Prufer序列
\(\mathrm{Prufer}\)序列将一棵\(n\)个点的无根树和一个长度为\(n-2\)的正整数序列建立起一一对应关系.
根据树构造序列:每次选取标号最小的叶子,删去并将其父亲的编号加入序列.
根据序列构造树:取序列首元素\(x\),最下标号不在序列中的点\(y\),连接\((x,y)\),删去\(x,y\). 当序列外的点集只剩两个数字时连接它们.
推论:
\(1.\) 度数为\(d_i\)的节点在序列中出现\(d_i-1\)次.
\(2.\) \(\mathrm{K}_n\)的生成树个数为\(n^{n-2}\)个.
\(3.\) 给定度数序列\(d_{1\sim n}\),无根树的方案数为\(\binom{n-2}{d_1-1,d_2-1,\cdots,d_n-1}\).
\(4.\) 图联通方案数
我们可以使用\(\mathrm{Prufer}\)序列来求解. 不妨把\(k\)个连通块缩成一个点,那么问题就转化为构造一棵树. 不妨设这棵树上每个点的度数为\(d_i\),那么\(\mathrm{Prufer}\)序列的方案数显然就是一个多项式系数:
\[\binom{k-2}{d_1-1,d_2-1,\cdots,d_k-1}=\frac{(k-2)!}{\prod_{i=1}^k(d_i-1)!}
\]
显然连接连通块\(i\)的边有\(s_i\)中选择,那么联通整棵树的方案数就是:
\[\binom{k-2}{d_1-1,d_2-1,\cdots,d_k-1}\prod_{i=1}^ks_i^{d_i}
\]
现在我们枚举度数序列\(d\)的所有情况,那么图联通方案数就是:
\[\sum_{\sum_{i=1}^kd_i=2k-1,\forall d_i\geq 1}\binom{k-2}{d_1-1,d_2-1,\cdots,d_k-1}\prod_{i=1}^ks_i^{d_i}
\]
然后换元,设\(d_i-1=t_i\),那么上式等于:
\[\sum_{\sum_{i=1}^kt_i=k-2,\forall t_i\geq 0}\binom{k-2}{t_1,t_2,\cdots,t_k}\prod_{i=1}^ks_i^{t_i+1}
\]
这时候考虑多项式定理:
\[\sum_{\sum_{i=1}^ka_i=p}\binom{p}{a_1,a_2,\cdots,a_k}\prod_{i=1}^kx_i^{a_i}=\left(\sum_{i=1}^kx_i\right)^p
\]
于是答案就显而易见了:
\[\sum_{\sum_{i=1}^kt_i=k-2,\forall t_i\geq 0}\binom{k-2}{t_1,t_2,\cdots,t_k}\prod_{i=1}^ks_i^{t_i+1}=\left(\sum_{i=1}^{k}s_i\right)^{k-2}\prod_{i=1}^k s_i=n^{k-2}\prod s_i
\]