斯特林数
【基本概念】
第一类斯特林数:\(\begin{bmatrix}n\\k\end{bmatrix}\):把 \(n\) 个数放入 \(k\) 个环中,本质不同的方案数。(要求每个环非空,环之间不区分,环可旋转)
递推公式:\(\begin{bmatrix}n\\k\end{bmatrix}=(n-1)\begin{bmatrix}n-1\\k\end{bmatrix}+\begin{bmatrix}n-1\\k-1\end{bmatrix}\)。
第一类斯特林数没有通项公式。
\(\displaystyle\sum_{k=0}^n \begin{bmatrix}n\\k\end{bmatrix}=n!\)。
第二类斯特林数:\(\begin{Bmatrix}n\\k\end{Bmatrix}\):把 \(n\) 个数放入 \(k\) 个盒中,本质不同的方案数。(非空,盒之间不区分)
递推公式:\(\begin{Bmatrix}n\\k\end{Bmatrix}=k\begin{Bmatrix}n-1\\k\end{Bmatrix}+\begin{Bmatrix}n-1\\k-1\end{Bmatrix}\)。
通项公式:\(\begin{Bmatrix}n\\k\end{Bmatrix}=\dfrac{1}{k!}\displaystyle\sum_{t=0}^k(-1)^t{k\choose t}(k-t)^n\)
【斯特林数与上下阶乘幂】
可以用斯特林数来让普通次幂和 上、下阶乘幂 转化。
普通转下:\(x^n=\displaystyle\sum_{k=1}^n\begin{Bmatrix}n\\k\end{Bmatrix}\cdot x^{\underline{k}}\)
普通转上:\(x^n=\displaystyle\sum_{k=1}^n(-1)^{n-k}\begin{Bmatrix}n\\k\end{Bmatrix}\cdot x^{\overline{k}}\)
上转普通:\(x^{\overline{n}}=\displaystyle\sum_{k=1}^n\begin{bmatrix}n\\k\end{bmatrix}x^k\)。
下转普通:\(x^{\underline{n}}=\displaystyle\sum_{k=1}^n(-1)^{n-k}\begin{bmatrix}n\\k\end{bmatrix}x^k\)。
【快速求某行列斯特林数】
【重要的引理】
引理:如果 \(p\) 是质数,则 \(x^{\overline{p}}=x^p-x\pmod p\)。
注意 \(x^{\overline{p}}=\sum_{k=1}^{p}\begin{bmatrix}p\\k\end{bmatrix}x^k\),比较系数,可知引理与这个命题等价: \(\begin{bmatrix}p\\1\end{bmatrix}=-1,\begin{bmatrix}p\\p\end{bmatrix}=1,\begin{bmatrix}p\\2\sim p-1\end{bmatrix}=0\)。
\(\begin{bmatrix}p\\1\end{bmatrix}\) 等于 \(p\) 个数的圆排列 \((p-1)!\),由威尔逊定理知 \((p-1)!=1\pmod p\)。
\(\begin{bmatrix}p\\p\end{bmatrix}\) 只能每个环一个,方案数 \(=1\)。
\(s(x)=x^{\overline{p}}\) 和 \(f(x)=x^p-x\) 这两个多项式。显然 \(x=0\sim p-1\) 时 \(s(x)=0\);由费马小定理,\(x=0\sim p-1\) 时 \(x^p\equiv x\pmod p\),所以 \(f(x)\) 在 \(x=0\sim p-1\) 也等于 \(0\)。
观察 \(G(x)=s(x)-f(x)\),因为 \(x^{\overline{p}}-(x^p-x)\) 中 \(x^p\) 项消去了,所以 \(\deg G(x)<p\)。但是由上面我们知道 \(G(x)\) 有 \(0\sim p-1\) 共 \(p\) 个零点。由拉格朗日定理知 \(G(x)=0\iff s(x)=f(x)\pmod p\)。
【快速求】
如果 \(n\) 比较小直接上递推公式了。
【行】
-
\(\begin{bmatrix}n\\0\sim n\end{bmatrix}\),转求 $x^{\overline{n}} $ 的系数。
令 \(f_n(x)=x^{\overline n}\),则 \(f_{2n}(x)=f_n(x)+f_n(x+n)\)。先递归求出 \(f_{n/2}(x)\),然后多项式平移。
-
\(\begin{Bmatrix}n\\0\sim n\end{Bmatrix}\)。
法一:因为 \(x^n=\displaystyle\sum \begin{Bmatrix}n\\i\end{Bmatrix}x^{\underline{i}}\),可以转求 \(x^n\) 的下降幂表示,\(O(n\log^2n)\)。
法二:用到通项公式 \(\begin{Bmatrix}n\\k\end{Bmatrix}=\dfrac{1}{k!}\displaystyle\sum_{t=0}^k(-1)^t{k\choose t}(k-t)^n\)。
\[\sum_{t=0}^k(-1)^t{k\choose t}(k-t)^n=\sum_{t=0}^k\dfrac{(-1)^t}{t!}\cdot \dfrac{(k-t)^n}{(k-t)!} \]标准形式 FFT,卷出来之后记得 \(\times \dfrac{1}{k!}\)。
【列】
-
第一类。\(n\) 个数放入一个圆排列,\(\begin{bmatrix}n\\1\end{bmatrix}=(n-1)!\)。考虑它关于 \(n\) 的 EGF:\(\sum_{n>0}\begin{bmatrix}n\\1\end{bmatrix}\cdot \dfrac{x^n}{n!}=\sum_{b>0}\dfrac{x^n}{n}\).
记为 \(\hat{A}(x)\)。根据 EGF 相关知识可得,放入 \(k\) 个圆排列的 EGF 是 \(\dfrac{1}{k!}(\hat{A}(x))^k\)。用多项式快速幂即可。
-
第二类。\(n\) 个数放入一个盒子的方案数是 \(1\)。\(1\) 的 EGF 是 \(sum_{n>0}\dfrac{x^n}{n!}=e^x-1\),\(k\) 个盒子就是 \(\dfrac{1}{k!}(e^x-1)^k\)。
【题目】
\(\displaystyle\sum(^n_i)i^k=\sum_{i=1}^n(^n_i)\sum_{j=1}^k\{^k_j\}i^{\underline{j}}=\sum_{i=1}^n(^n_i)\sum_{j=1}^{\min(k,i)}\{^k_j\}(^i_j)\cdot j!=\sum_{j=1}^{\min(k,n)}j!\cdot \{^k_j\}\sum_{i=j}^n(^n_i)(^i_j).\)
这里用一下这个:\((^n_i)(^i_j)=(^n_j)(^{n-j}_{i-j})\).
\(\displaystyle...=\sum_{j=1}^{\min(k,n)}j!(^n_j)\{^k_j\}\sum_{i=j}^n(^{n-j}_{i-j})=\sum_{j=1}^{\min(k,n)}j!(^n_j)\{^k_j\}\cdot 2^{n-j}\)
\(\min(k,n)\le 5000\),就相当于 \(5000\) 个数求和。
\(j!,(^n_j),2^{n-j}\) 都可以预处理出来。(注意这里 \(j\) 的范围很小)
而 \(\begin{Bmatrix}k\\j\end{Bmatrix}\) 第二类斯特林数我们直接用递推公式,\(O(k^2)\) 预处理。
问:\(1\sim n\) 的置换,有偶数个环 计数。
即求 \(\displaystyle\sum_{k\equiv 0\pmod 2}[^n_k]\)。
解:\(x^{\overline{n}}=\sum_{k=1}^n[^n_k]x^k\)。
将 \(x\) 代入 \(1,-1\) 可以消掉奇数次幂项。