斯特林数
第一类斯特林数
- s(n, m)表示将n个元素分成m个圆排列的方案数
- 也可以记作\(\begin{bmatrix}n\\m\end{bmatrix}\)
递推式
- \(\begin{bmatrix}n\\m\end{bmatrix} = \begin{bmatrix}n - 1\\m - 1\end{bmatrix} + (n - 1)\begin{bmatrix}n - 1\\m\end{bmatrix}\)
- 表示可以自己单独拿出来成为一个环, 也可以放在任意一个元素的前面
性质1
\[\sum_{i=0}^n \begin{bmatrix}n\\i\end{bmatrix} = n!
\]
- 证明:每个排列实际上对应着一个置换
- 考虑s(n,i)分成的i个环, 实际上就是对应着循环节个数为i的一种置换, 一一对应过去就是所有置换方案就是全排列了
性质2
\[\displaystyle x^{\underline{n}}=\sum_{i=0}^n\begin{bmatrix}n\\i\end{bmatrix}(-1)^{n-i}x^i
\]
- 证明:使用数学归纳法
- 对于\(n == 1\)的情况, 显然成立
- 对于\(n > 1\)的情况
\[\begin{aligned}x^{\underline{n+1}}&=(x-n)x^{\underline n}\\
&=(x-n)*\sum_{i=0}^n\begin{bmatrix}n\\i\end{bmatrix}(-1)^{n-i}x^i\\
&=\sum_{i=0}^{n+1}\begin{bmatrix}n\\i-1\end{bmatrix}(-1)^{n-i-1}x^i+n\sum_{i=0}^{n+1}\begin{bmatrix}n\\i\end{bmatrix}(-1)^{n-i+1}x^i\\
&=\sum_{i=0}^{n+1}(\begin{bmatrix}n\\i-1\end{bmatrix}+n*\begin{bmatrix}n\\i\end{bmatrix})(-1)^{n+1-i}x^i\\
&=\sum_{i=0}^{n+1}\begin{bmatrix}n+1\\i\end{bmatrix}(-1)^{n+1-i}x^i
\end{aligned}
\]
- 同理
\[\displaystyle x^{\overline n}=\sum_{i=0}^n \begin{bmatrix}n\\i\end{bmatrix}x^i
\]
- 证明
\[\begin{aligned}
x^{\overline {n + 1}}&=(x + n) \sum_{i = 0}^n
\begin{bmatrix}n\\i\end{bmatrix} x ^ i\\
&= \sum_{i = 0}^{n + 1}
\begin{bmatrix}n\\i - 1\end{bmatrix} x ^ i + n\sum_{i = 0}^{n + 1}
\begin{bmatrix}n\\i\end{bmatrix} x ^ i\\
&=\sum_{i = 0}^{n + 1}(
\begin{bmatrix}n\\i - 1\end{bmatrix} + n\begin{bmatrix}n\\i\end{bmatrix})x ^ i\\
&= \sum_{i = 0} ^ {n + 1}\begin{bmatrix}n + 1\\i\end{bmatrix} x ^ i
\end{aligned}
\]
自然幂数和问题
- 记录\(S_k(n) = \sum_{i = 1} ^ n i ^ k\)
- 那么考虑
\[\begin{aligned}
x^{\underline{n}}&=\sum_{i=0}^n\begin{bmatrix}n\\i\end{bmatrix}(-1)^{n-i}x^i\\
x ^n&=x^{\underline{n}} - \sum_{i = 0}^{n - 1}\begin{bmatrix}n\\i\end{bmatrix}(-1) ^ {(n - i)} x^i\\
\end{aligned}
\]
- 把这个带进式子求得
\[\begin{aligned}
S_k(n) &= \sum_{i = 1}^n i ^ k\\
&= \sum_{i = 1} ^ n (i^{\underline{k}} - \sum_{j = 0}^{k - 1} \begin{bmatrix}k\\j\end{bmatrix} (-1) ^ {k - j}i^j)\\
&=\sum_{i = 1} ^ n i ^{\underline{k}} - \sum_{j = 0} ^ {k - 1} \begin{bmatrix}k\\j\end{bmatrix} (-1) ^ {k - j}(\sum_{l = 1} ^ {n} l ^ j)\\
&= \frac{(n + 1) ^ {\underline{k + 1}}}{k + 1}- \sum_{j = 0} ^ {k - 1} \begin{bmatrix}k\\j\end{bmatrix} (-1) ^ {k - j}s_{l}(n)
\end{aligned}
\]
- 递推即可
预处理方法
- 分治fft
- 构造第一类斯特林数生成函数
\[\sum_{i=0}^n\begin{bmatrix}n\\i\end{bmatrix} x^i=\prod_{i=0}^{n-1}(x+i)
\]
- 显然可行
- 倍增法
- 记\(\displaystyle F_n(x)=\prod_{i=0}^{n-1}(x+i)\)
- 那么存在\(F_{2n}(x)=F_n(x)F_{n}(x+n)\)
- 递归求解\(F_n(x)\), 然后考虑快速求解\(F_n(x + n)\)
- 考虑设
\[F_n(x) = \sum_{i = 0} ^ {n - 1} a_i x ^ i
\]
\[\begin{aligned}
F_n(x+n)&=\sum_{i=0}^{n-1}a_i (x+n)^i\\
&=\sum_{i=0}^{n-1}a_i\sum_{j=0}^i{i\choose j}n^{i-j}x^j\\
&=\sum_{i=0}^{n-1}(\sum_{j=i}^n {j\choose i}n^{j-i}a_j)x^i
\end{aligned}
\]
- 后面显然可以卷积
\[\]
第二类斯特林数
- S(n,m)表示把n个元素划分成m个子集的方案数
- 记作\(\begin{Bmatrix}n\\m\end{Bmatrix}\)
递推式
\[\begin{Bmatrix}n\\m\end{Bmatrix}=\begin{Bmatrix}n-1\\m-1\end{Bmatrix}+m*\begin{Bmatrix}n-1\\m\end{Bmatrix}
\]
- 组合意义是放到任意一个集合中或者新建一个集合
性质1
\[\begin{aligned}
\begin{Bmatrix}n\\m\end{Bmatrix} &= \frac{1}{m!} \sum_{i = 0} ^ m (-1) ^ i \binom{m}{i}(m - i) ^ n\\
&= \sum_{i = 0}^m \frac{(-1) ^ i}{i!} \frac{(m - i) ^ n}{(m - i) !}
\end{aligned}
\]
- 可以看做进行容斥, 枚举多少个集合不放置, 其余的集合随便放置, 最后每一种情况会统计m!次
- 显然可以卷积求解
性质2
\[m ^ n = \sum_{i = 0}^m \begin{Bmatrix}n\\i\end{Bmatrix} m^{\underline{i}}
\]
- 证明:可以看作将n个求放到m个带标号的盒子内, 那么我们枚举哪些盒子不为空, 则
\[\begin{aligned}
m ^ n &= \sum_{i = 0}^m \begin{Bmatrix}n\\i\end{Bmatrix} \binom{m}{i} i!\\
&=\sum_{i = 0}^m \begin{Bmatrix}n\\i\end{Bmatrix} m^{\underline{i}}
\end{aligned}
\]
容斥
经典容斥系数的解
- 证明每个地方只要被覆盖了就会被统计1次答案, 假如这个地方被覆盖了n次, 那么
\[\begin{aligned}
ans&=\sum_{i = 1} ^ n (-1) ^{ (i - 1)} \binom{n}{i}\\
&= \sum_{i = 1} ^ n (\binom{n - 1}{i} + \binom{n - 1}{i - 1}) (-1)^{i - 1}\\
&= \sum_{i = 1} ^ {n - 1} \binom{n - 1}{i} (-1) ^{i - 1} + \sum_{i = 1} ^ n \binom{n - 1}{i - 1} (-1) ^{i - 1}\\
&= \sum_{i = 1} ^ {n - 1} \binom{n - 1}{i} (-1) ^{i - 1} + \sum_{i = 1} ^ {n - 1} \binom{n - 1}{i} (-1) ^{i} + \binom{n}{0}\\
&=1
\end{aligned}
\]
错排问题
- 考虑枚举那些地方强制相同, 然后其余地方随便放置,
\[\begin{aligned}
f[n] &= \sum_{i = 0} ^ n \binom{n}{i} (-1)^i(n - i)!\\
&=\sum_{i = 0} ^ n (-1) ^i \frac{n!}{i!}\\
&= (-1) ^ n + n\sum_{i = 0} ^ {n - 1}(-1) ^ i \frac{(n - 1)!}{i!}\\
&= (-1) ^ n + nf[n - 1]
\end{aligned}
\]
min-max容斥
- 设S是一个可重集合,max(S)和min(S)分别表示集合中的最大值和最小值,则有如下式子成立:
\[\begin{aligned}
max(S) &= \sum_{T\subseteq S} (-1) ^ {|T| + 1} min(T)\\
min(S) &= \sum_{T\subseteq S} (-1) ^ {|T| + 1} max(T)
\end{aligned}
\]
- 证明
- 以第一个式子为例,设max(S)=x,那么只有T={x} 时的min(T) 为x(可能有多个相同的最大值,这时候随便钦点一个就可以了;
- 对于除此之外的所有T,肯定至少存在一个集合A∩T = ?, 使得min(T和A每个子集的并)等于min(T),
- 然后由于从A中选择奇数偶数个元素的方案数相同, 所以正负抵消, 最后只剩下了x
推广1
- 在期望下该式子也是成立的, 即
\[\begin{aligned}
E[max(S)] &= \sum_{T\subseteq S} (-1) ^ {|T| + 1} E[min(T)]\\
E[min(S)] &= \sum_{T\subseteq S} (-1) ^ {|T| + 1} E[max(T)]
\end{aligned}
\]
反演
反演本质
- 给定数列\({f_i}\) 和\({g_i}\)存在
\[g_n = \sum_{i = 0} ^ n a[n][i] f_i
\]
- 这里使用f推出了g, 那么我们反演的过程就是使用g推出f
- 也就是找到系数数组b,使得
\[f_n = \sum_{i = 0} ^ n b[n][i] g_i
\]
- 引入克罗内克函数(为了好写)
\[\delta(i,j)=\begin{cases}1&i=j\\0&i\neq j\end{cases}
\]
- 整合两个式子得到
\[\begin{aligned}f_n&=\sum_{i=0}^n b[n][i]g_i\\&=\sum_{i=0}^n b[n][i]\sum_{j=0}^ia[i][j]f_j\\&=\sum_{i=0}^n f_i\sum_{j=i}^nb[n][j]*a[j][i]\end{aligned}
\]
- 同理
\[g[n] = \sum_{i = 0} ^ n g_i \sum_{j = i} ^ n a[n][j] * b[j][i]
\]
- 显然, 这里能够反演的前提条件是
\[\begin{cases}
\sum_{j = i} ^ n b[n][j] * a[j][i] &= \delta(n, i)\\
\sum_{j = i} ^ n a[n][j] * b[j][i] &= \delta(n,i)
\end{cases}
\]
二项式反演
\[f_n=\sum_{i=0}^n {n \choose i}g_i\iff g_n=\sum_{i=0}^n (-1)^{n-i}{n \choose i}f_i
\]
- 证明, 即要证明
\[\begin{cases}
\sum_{j = i} ^ n \binom{n}{j}(-1) ^ {j - i}\binom{j}{i} &= \delta(n, i)\\
\sum_{j = i} ^ n (-1) ^ {n - j} \binom{n}{j} \binom{j}{i} &= \delta(n,i)
\end{cases}
\]
- 仅证第一个, 第二个类似
\[\begin{aligned}
\sum_{j=i}^n{n \choose j}(-1)^{j-i}{j \choose i}&=\delta(n, i)\\
\sum_{j=i}^n(-1)^{j-i}{n \choose i}{n-i \choose j-i}&=\delta(n,i)\\
{n \choose i}\sum_{d=0}^{n-i}(-1)^{d}{n-i \choose d}&=\delta(n, i)\\
\end{aligned}
\]
- 后面这堆式子仅当n等于i的时候取值为1, 否则取值为0, 故得证
- 另一种形式是
\[\begin{aligned}f_n&=\sum_{i=0}^n(-1)^i{n \choose i}g_i\\g_n&=\sum_{i=0}^n(-1)^i{n\choose i}f_i\end{aligned}
\]
- 证明
\[\begin{aligned}
\sum_{j = i} ^ n (-1) ^ j \binom{n} {j} (-1) ^ i \binom{j}{i}&= \delta(n, i)\\
\sum_{j = i} ^ n (-1) ^{i + j} \binom{n}{i} \binom{n - i}{j - i}&=\delta(n,i)\\
\binom{n}{i} \sum_{j = i} ^ {n}(-1) ^{j - i}\binom{n - i}{j - i} &= \delta(n,i)
\end{aligned}
\]
- 得证
斯特林反演
- 式子是
\[\begin{aligned}
f(n)=\sum_{i=1}^n \begin{Bmatrix}n\\i\end{Bmatrix}g(i)\iff g(n)=\sum_{i=0}^n(-1)^{n-i}\begin{bmatrix}n\\i\end{bmatrix}f(i)\end{aligned}
\]
- 需要证明
\[\begin{cases}\sum_{j=i}^n(-1)^{n-j}\begin{bmatrix}n\\j\end{bmatrix}\begin{Bmatrix}j\\i\end{Bmatrix}=\delta(n,i)\\\sum_{j=i}^n(-1)^{j-i}\begin{bmatrix}j\\i\end{bmatrix}\begin{Bmatrix}n\\j\end{Bmatrix}=\delta(n,i)\end{cases}
\]
- 首先容易得到
\[\begin{aligned}
x^{\underline{n}}=(-1)^n(-x)^{\overline{n}}\\
x^{\overline{n}}=(-1)^n(-x)^{\underline{n}}
\end{aligned}
\]
- 那么
\[\begin{aligned}
\displaystyle m^n&=\sum_{i=0}^{n}\begin{Bmatrix}n\\i\end{Bmatrix}(-1)^i(-m)^{\overline{i}}\\
&=\sum_{i=0}^{n}\begin{Bmatrix}n\\i\end{Bmatrix}(-1)^i\sum_{j=0}^i\begin{bmatrix}i\\j\end{bmatrix}(-m)^j\\
&=\sum_{i=0}^n m^i\sum_{j=i}^{n}\begin{Bmatrix}n\\j\end{Bmatrix}\begin{bmatrix}j\\i\end{bmatrix}(-1)^{j-i}
\end{aligned}
\]
莫比乌斯反演
- 式子是
\[f_n=\sum_{d|n}g_d\iff g_n=\sum_{d|n}\mu_{\frac{n}{d}}f_d
\]
- 需要证明
\[\begin{cases}
\sum_{j = i} ^ n [j | n] \mu(\frac{n}{j})[i | j] = \delta(i, n)\\
\sum_{j = i} ^ n [j | n] [i | j] \mu(\frac{j}{i}) = \delta(i, n)
\end{cases}
\]
- 我们来证明
\[\sum_{j = i} ^ n [j | n] [i | j] \mu(\frac{j}{i}) = \delta(i, n)
\]
- 首先n不是i倍数的时候答案一定是0
- 假设n是i的倍数, 那么
\[\begin{aligned}
&\ \ \ \ \ \sum_{j = i} ^ n [j | n] [i | j] \mu(\frac{j}{i})\\
&=\sum_{d = 1} ^ {\frac{n}{i}}[d | \frac{n}{i}] \mu(d)\\
&=\delta(n,i)
\end{aligned}
\]
- 同理可证另一个