斯特林数

第二类斯特林数

\(n\brace k\) 表示将 \(n\) 个有标号元素放到 \(k\) 个无标号非空集合的方案数。

根据组合意义,我们有递推式

\[{n\brace k} ={n-1\brace k-1}+k{n-1\brace k} \]

边界条件是 \({n\brace 0}=[n=0]\)

根据容斥原理,我们有

\[{n\brace k}=\frac 1{k!}\sum_{i=0}^k(-1)^i(k-i)^{n}\binom{k}{i} \]

这里除 \(k!\) 是因为我们容斥出来的是有标号非空集合。

第二类斯特林数最重要的应用可能就是普通幂转下降幂了。

\[x^n=\sum_{k}{n\brace k}x^{\underline{k}} \]

证明我们考虑归纳法。

\[\begin{aligned} x^{n+1}&=x\times x^n\\ &=x\sum_{k=0}^n{n\brace k}x^{\underline{k}}\\ &=\sum_{k=0}^n{n\brace k}(x-k+k)x^{\underline{k}}\\ &=\sum_{k=0}^nk{n\brace k}x^{\underline{k}}+{n\brace k}x^{\underline{k+1}}\\ &=\sum_{k=0}^{n+1}k{n\brace k}x^{\underline{k}}+{n\brace k-1}x^{\underline{k}}\\ &=\sum_{k=0}^{n+1}{n+1\brace k}x^{\underline{k}} \end{aligned} \]

第一类斯特林数

\({n\brack k}\) 表示将 \(n\) 个有标号元素放到 \(k\) 个非空无标号置换当中的方案数。

\[{n\brack k}={n-1\brack k-1}+(n-1){n-1\brack k} \]

边界条件 \({n\brack 0}=[n=0]\)

注意到,这事实上对应于一个有 \(k\) 个置换环的 \(n\) 阶排列的数量。所以显然有

\[\sum_{k=0}^n{n\brack k}=n! \]

类似于第二类斯特林数,我们有

\[x^{\overline{n}}=\sum_{k}{n\brack k}x^k \]

一些式子

我们有

\[x^{\underline{n}}=(-1)^n(-x)^{\overline{n}}\\ x^{\overline{n}}=(-1)^n(-x)^{\underline{n}} \]

就有

\[\begin{aligned} x^n&=\sum_{k=0}^n{n\brace k}x^{\underline{k}}\\ &=\sum_{k=0}^n{n\brace k}(-1)^k(-x)^{\overline{k}}\\ &=\sum_{k=0}^n{n\brace k}(-1)^k\sum_{p=0}^k{k\brack p}(-x)^p\\ &=\sum_{p=0}^nx^p\sum_{k=p}^n(-1)^{k+p}{n\brace k}{k\brack p} \end{aligned} \]

对比两侧多项式系数,可得

\[\sum_{k=p}^n(-1)^{k+p}{n\brace k}{k\brack p}=[p=n] \]

类似地

\[\sum_{k=p}^n(-1)^{k+p}{n\brack k}{k\brace p}=[p=n]\\ \sum_{k=p}^n(-1)^{n-k}{n\brace k}{k\brack p}=[p=n]\\ \sum_{k=p}^n(-1)^{n-k}{n\brack k}{k\brace p}=[p=n] \]

这就导出斯特林反演。

\[f(n)=\sum_{k=0}^n{n\brace k}g(k) \]

\[g(n)=\sum_{k=0}^n(-1)^{n-k}{n\brack k}f(k) \]

\[\begin{aligned} g(n)&=\sum_{i=0}^ng(i)[i=n]\\ &=\sum_{i=0}^ng(i)\sum_{j=i}^n(-1)^{n-j}{n\brack j}{j\brace i}\\ &=\sum_{j=0}^n{n\brack j}(-1)^{n-j}\sum_{i=0}^jg(i){j\brace i}\\ &=\sum_{j=0}^n{n\brack j}(-1)^{n-j}f(j) \end{aligned} \]

同理,有

\[f(n)=\sum_{i=0}^n{n\brack i}g(i)\iff g(n)=\sum_{i=0}^n(-1)^{n-i}{n\brace i}f(i) \]

那么使用这个式子,我们就可以得出

\[x^n=\sum_k(-1)^{n-k}{n\brace k}x^{\overline{k}}\\ x^{\underline{n}}=\sum_k(-1)^{n-k}{n\brack k}x^k\\ \]

可能有的例题

CF960 G

求前缀最大值个数 \(=a\),后缀最大值个数 \(=b\) 的,长度为 \(n\) 的排列个数。

\(n\le 10^5\)

这个题怎么感觉我之前见过。

你考虑枚举最大值 \(n\) 的位置,然后发现前后独立,答案就是

\[\sum_{i=1}^nf_{i-1}g_{n-i}\binom{n-1}{i-1} \]

其中 \(f_i,g_i\) 分别表示长度为 \(i\) 的排列,前缀最大值个数是 \(a/b\) 的方案数。

问题转化成怎么去求 \(f\)

注意到,如果我们钦定了一些地方是前缀最大值,那么相邻两个前缀最大值位置,能填的数的大小是小于左侧那个值的。

然后可能有点跳跃,就是你发现我们可以把 \(1\sim i\) 的数分到 \(a\) 组里头,然后每一组实际上是前缀最大值及它之后的那段的这么一组。

那你发现方案数是什么,每一组肯定是把组内最大值放到前头,不同组之间肯定是按照最大值大小排序,所以这个方案数就是 \({i\brack a}\)

问题转化成如何对 \(1\le i\le n\)\({i\brack a}\)

这是同一列第一类斯特林数的计算,我们考虑轮换的 EGF 是 \(F(x)=\sum_{i=1}\frac{(i-1)!}{i!}x^i=\sum_{i=1}\frac{x^i}{i}\),我们求它的 \(a\) 次幂即可。

CF961 G

\[\begin{aligned} ans&=\sum_{|R|=k}\sum_{S\in R}|S|\sum_{i\in S}w_i\\ &=\sum_{S}|S|\sum_{i\in S}w_i\sum_R[|R|=k][S\in R]\\ &=\sum_{S}|S|\sum_{i\in S}w_i{n-|S|\brace k-1}\\ &=\sum_{p=1}^np{n-p\brace k-1}\sum_{|S|=p}\sum_{i\in S}w_i\\ &=\sum_{p=1}^np{n-p\brace k-1}\binom{n-1}{p-1}\sum_{i=1}^nw_i \end{aligned} \]

只需要处理同一列第二类斯特林数。我们考虑非空集合的 EGF 是 \(F(x)=\sum_{i\ge 1}\frac{1}{i!}x^i=e^x-1\),我们计算 \(k-1\) 次幂即可。

posted @ 2024-06-18 20:35  PYD1  阅读(11)  评论(0)    收藏  举报