Loading

组合数学

组合数学

一些必要 trick

  1. 推式子,先提 \(\sum\)\(\Pi\) 到最前面,然后从后往前合并,必要时考虑更改 \(\sum\) 的取值
  2. 看到次方变为斯特林数,\(x^n=\sum\limits_{i=0}^{n} {n \brace i}{x \choose i}i!=\sum\limits_{i=0}^{n}\sum\limits_{i=1}^m{(-1)^{m-i}\frac{i^n}{(m-i)!}}{x \choose i}\)
  3. 注意莫反、欧反的形式

推式子基本原理

  1. 先把 \(\sum\) 移到最前面。
  2. 将多个 \(\sum\) 排序,范围更小的放在前面。
  3. 将只与当前 \(\sum\) 有关的式子尽量往前提。
  4. 将能简化式子的特殊边界提出来。
  5. 从后往前处理。

基本概念

  1. \(a^{\underline m}\) 表示 \(a\)\(m\) 次下降幂。
  2. \(a^{\overline m}\) 表示 \(a\)\(m\) 次上升幂。

递推式

\[{n \choose m}={n-1 \choose m}+{n-1 \choose m-1} \\ \]

证明

从组合意义上推导,在 n 个人中选 m 个相当于单独考虑最后一人,若他要选,则为\({n-1 \choose m-1}\)他不选则为 \({n-1 \choose m}\)

吸引/相伴等式

\[\begin{aligned} \frac{n \choose m}{n-1 \choose m-1}&=\frac{n}{m} \\ \frac{n \choose m}{n-1 \choose m}&=\frac{n}{n-m} \\ \frac{n \choose m}{n \choose m-1}&=\frac{n-m+1}{m} \\ \end{aligned} \]

另外的形式:

\[\begin{aligned} k {n \choose k}&=n {n-1 \choose k-1} \\ (n-k){n \choose k}&=n{n-1 \choose k} \end{aligned} \]

上指标反转

\[{n \choose m}=(-1)^m{m-n-1 \choose m} \]

证明

\[\begin{aligned} {n \choose m}=\frac{n^{\underline{m}}}{m!}&=\frac{n\times(n-1)\times (n-2)\times...\times (n-m+1)}{m!} \\ &=\frac{(-1)^m\times (-n)\times(1-n)\times...\times(m-n-1)}{m!} \\ &=\frac{(-1)^m\times (m-n-1)^{\underline{m}}}{m!} \\ &=(-1)^m{m-n-1 \choose m} \end{aligned} \]

三项式系数恒等式

\[{n \choose m}{m \choose k}={n \choose k}{n-k \choose m-k} \]

等式两边拆开约分即可得证。

平行求和

\[{n \choose 0}+{n+1 \choose 1}+...+{n+m \choose m} \\ =\sum\limits_{i=0}^{m}{n+i \choose i}={n+m+1 \choose m} \\ m \in \mathbb{N} \]

证明

\({n+m+1 \choose m}\)用加法公式展开即可。

上指标求和

\[\sum\limits_{i=0}^{n}{i \choose m}={n+1 \choose m+1} \]

证明

从组合意义入手,相当于我从 \(n+1\) 个数中选 \(m+1\) 个数,先假设选 \(i\),那么 \(i\) 前面还需要选 \(m\) 个数,枚举这个 \(i\),即为答案。

也可通过微积分求导知识进行证明,这里不再详述。

练习一:

\(\sum\limits_{i=0}^{m}{n+i \choose i}\)

\[\begin{aligned} \sum\limits_{i=0}^{m}{n+i \choose i}&=\sum\limits_{i=0}^{m}{n+i \choose n+i-i} \\ &=\sum\limits_{i=0}^{m}{n+i \choose n} \\ &={n+m+1 \choose n+1} \end{aligned} \]

下指标求和(整行)

\[\sum\limits_{i=0}^{n}{n \choose i}=2^n \]

证明

\[\begin{aligned} \sum\limits_{i=0}^{n}{n \choose i}&=\sum\limits_{i=0}^{n}{n \choose i}1^{n-i}1^i \\ &=(1+1)^n=2^n \end{aligned} \]

交错求和

\[\sum\limits_{k=0}^{m}(-1)^k{n \choose k}=(-1)^m{n-1 \choose m},m\in \mathbb{Z} \]

证明

\[\begin{aligned} \sum\limits_{k=0}^{m}(-1)^k{n \choose k}&=\sum\limits_{k=0}^{m}{k-n-1 \choose k} \text{上指标反转} \\ &={m-n \choose m} \text{平行求和} \\ &=(-1)^m{n-1 \choose m} \text{上指标反转} \end{aligned} \]

下指标卷积(范德蒙德卷积)

\[\sum\limits_{i=0}^k{n \choose i}{m \choose k-i}={n+m \choose k} \]

证明

\(n\) 个数中选 \(i\) 个数,再从 \(m\) 个数中选 \(k-i\) 个数,相当于从 \(n+m\) 个数中选 \(k\) 个数。

练习二:

\(\sum\limits_{i=0}^{m}{n \choose i}{m \choose i}\)

\[\begin{aligned} \sum\limits_{i=0}^{m}{n \choose i}{m \choose i}&=\sum\limits_{i=0}^{m}{n \choose i}{m \choose m-i} \\ &={n+m \choose m} \end{aligned} \]

上指标卷积

\[\sum\limits_{i=0}^{n}{i \choose a}{n-i \choose b}={n+1 \choose a+b+1} \]

证明

相当于从左边 \(i\) 个中选 \(a\) 个,右边 \(n-i\) 个中选 \(b\) 个。等于从 \(n\) 个中选 \(a+b\) 个,枚举分割点 \(i\)

练习三:

\(\sum\limits_{i=m}^{n}(-1)^i{n \choose i}{i \choose m}\)

\[\begin{aligned} \sum\limits_{i=m}^{n}(-1)^i{n \choose i}{i \choose m}&=\sum\limits_{i=m}^{n}(-1)^i{n \choose m}{n-m \choose i-m} \\ &={n \choose m}\sum\limits_{i=m}^{n}(-1)^i{n-m \choose i-m} \\ &={n \choose m}\sum\limits_{i=0}^{n-m}(-1)^{i+m}{n-m \choose i} \\ &={n \choose m}(-1)^m\sum\limits_{i=0}^{n-m}(-1)^{i}{n-m \choose i}\times 1^{n-m-i} \\ &={n \choose m}(-1)^m 0^{n-m} \\ &=(-1)^m[n=m] \\ \end{aligned} \]

例题:P2791 幼儿园篮球题

至此,组合数学的基本内容已结束。

总结如下图:

img

Lucas定理

\[{n \choose m}\equiv{\lfloor \frac{n}{p} \rfloor \choose \lfloor \frac{m}{p} \rfloor}{{n\bmod p}\choose {m \bmod p}}\pmod p \\ \]

其中 \(p\) 为质数。

证明

注意到 \({p \choose n}\equiv[n=p \lor n=0]\pmod p\)

因此 \((a+b)^p\equiv a^p+b^p \pmod p\)

对于 \(f(x)=(1-x)^n,f(x)[x^m]={n \choose m}\)

我们现在对 \(f(x)\) 做一点变换,

\[\begin{aligned} f(x)&=(1+x)^n \\ &=(1+x)^{p\times\lfloor\frac{n}{p}\rfloor}(1+x)^{n \bmod p} \\ &=((1+x)^p)^{\lfloor\frac{n}{p}\rfloor}(1+x)^{n \bmod p} \\ \end{aligned} \]

\[f(x)\equiv (1+x^p)^{\lfloor\frac{n}{p}\rfloor}(1+x)^{n \bmod p} \pmod p \]

所以对于 \(f(x)\),前半部分 \(((1+x)^p)^{\lfloor\frac{n}{p}\rfloor}\) 一定为 \(p\) 的倍数,后半部分 \((1+x)^{n \bmod p}\) 一定小于 \(p\) ,设 \(h(x)=(1+x^p)^{\lfloor\frac{n}{p}\rfloor}\)\(g(x)=(1+x)^{n \bmod p}\)

\(f(x)[x^m]=h(x)[x^{kp}]\times g(x)[x^{r}] \pmod p\)

所以就有 \(m=kp+r\rightarrow k=\lfloor \frac{m}{k}\rfloor,r=m\bmod p\)

就可以得出:

\[{n \choose m}\equiv{\lfloor \frac{n}{p} \rfloor \choose \lfloor \frac{m}{p} \rfloor}{{n\bmod p}\choose {m \bmod p}}\pmod p \\ \]

二项式定理

\[(x+y)^n=\sum\limits_{i=0}^{n}{n \choose i}x^{n-i}y^i \]

拓展——下降(上升)幂二项式定理

\[(x+y)^{\underline{n}}=\sum\limits_{i=0}^{n}{n \choose i}x^{\underline{n-i}}y^{\underline{i}} \\ (x+y)^{\overline{n}}=\sum\limits_{i=0}^{n}{n \choose i}x^{\overline{n-i}}y^{\overline{i}} \\ \]

证明(这里不用数学归纳法进行证明)

\[\begin{aligned} \sum\limits_{i=0}^{n}{n \choose i}x^{\overline{n-i}}y^{\overline{i}}&=\sum\limits_{i=0}^{n}\frac{n!}{(n-i)!i!}x^{\overline{n-i}}y^{\overline{i}} \\\\ &=\sum\limits_{i=0}^{n}n!\frac{x^{\overline{n-i}}y^{\overline{i}}}{(n-i)!i!} \\ &=n!\sum\limits_{i=0}^{n}{x \choose i}{y \choose n-i} \\ (\text{根据范德蒙德卷积})&=n!{x+y \choose n} \\ &=(x+y)^{\underline{n}} \\ \end{aligned} \]

上升幂方法相同。

错排

定义:一个满足 \(a_i\ne i\) 的序列。

推导式

\[f_n=(n-1)(f_{n-1}+f_{n-2}) \]

证明

若当前将 \(1\) 放到位置 \(k(k\ne 1)\),那么 \(k\) 的放置位置可以分类讨论:

  1. \(k\) 放在位置 \(1\) 上,那么还会剩下 \(n-2\) 个数错排,方案数为 \(f_{n-2}\)

  2. \(k\) 放到某个位置 \(t(t\ne 1)\),那么假设 \(1\) 号位置填上了 \(P\),则 \(p\ne 1 \land p\ne k\),此时可以考虑一个新序列,把 \(1\) 去掉,此时方案数为 \(f_{n-1}\)

例题:P7438 更简单的排列计数

\(\text{cyc}_\pi\) 将长为 \(n\) 的排列 \(\pi\) 当成置换时所能分解成的循环个数。给定两个整数 \(n,k\) 和一个 \(k-1\) 次多项式,对 \(1\leq m\leq n\) 求:

\[\sum\limits_{\pi}F(\text{cyc}_{\pi}) \]

其中 \(\pi\) 是长度为 \(m\) 且不存在位置 \(i\) 使得 \(\pi_i=i\) 的排列。

\[\begin{aligned} \sum\limits_{\pi}F(cyc_\pi)&=\sum\limits_\pi\sum\limits_{i=0}^{k-1}f_i\times cyc_\pi^i \\ &=\sum\limits_\pi\sum\limits_{i=0}^{k-1}\sum\limits_{j=0}^{i-1} f_i{i \brace j}{cyc_\pi \choose j}j! \\ &=\sum\limits_{j=0}^{k-1}j!\sum\limits_{i=j}^{k-1}f_i {i \brace j}\sum\limits_\pi{cyc_\pi \choose j} \end{aligned} \]

我们发现,\(\sum\limits_{i=j}^{k-1}f_i {i \brace j}\)\(\sum\limits_\pi{cyc_\pi \choose j}\) 无关,所以可以将其预处理。

\(j!,f_i,{i \brace j}\) 都是能够优先处理的。现在考虑 \({cyc_\pi \choose j}\) 的处理。

定义函数 \(C_{t,j}\) 为长度为 \(t\) ,环数为 \(j\) 的排列数,\(P_{t,j}=\sum\limits_{{|\pi |}=t}{cyc_\pi \choose j}\) ,通过推导,能够得出:

\[\begin{aligned} C_{t,j}&=(n-1)(C_{t-1,j}+C_{t-2,j-1}) \\ P_{t,j}&=(n-1)(P_{t-1,j}+P_{t-2,j-1}+P_{t-1,j-1}) \end{aligned} \]

那么答案即为:

\[\begin{aligned} \sum\limits_{j=0}^{k-1}j!\sum\limits_{i=j}^{k-1}f_i {i \brace j}\sum\limits_{k=1}^nP_{i,j} \end{aligned} \]

其中 \(i\) 的复杂度为 \(O(n)\)\(j\) 的复杂度为 \(O(k)\),总复杂度为 \(O(nk)\),不会超时。

鸽巢定理

原理:将 \((\sum\limits_{i=1}^{n}p_i)-n+1\) 个东西放入 \(n\) 个盒子中,一定存在一个盒子 \(i\),使得第 \(i\) 个盒子至少装了 \(p_i\) 个物品。

证明(反证法)

\[\forall x\in \mathbb{N^* } \land 1\le x \le n,a_i<p_i \\ \sum a_i<(\sum p_i)-n<(\sum p_i)-n+1 \]

与条件矛盾,故成立。

练习四

有十个数 \(a_1,a_2...a_10\) 满足 \(\forall_{1\le i\le 10}1\le a_i\le 60\),证明能够从 \(a_i\) 中挑出两个交为空的子集,使得它们的和相等。

证明

两个交为空的子集和相等,所以加上交集后和仍不变,总共有 \(2^{10}=1024\),但值域仅为 \([0,600]\),故能够选出。

练习五

证明一张有超过 \(1\) 个点的简单无向图必定有两点度数相等。

证明

考虑分类讨论:

  1. \(2\) 个度数为 \(0\) 的点,符合条件。

  2. \(1\) 个度数为 \(0\) 的点,则第 \(n\) 个点需要连 \(n-1\) 条边,故至少有一个点符合。

  3. 没有度数为 \(0\) 的点,那么边数的范围为 \([1,n-1]\),所以符合。

练习六

证明能从任意 11 个实数中挑选出 4 个数 \(a,b,c,d\) 满足:

\((ac+bd)^2\geq\frac 1 2(a^2+b^2)(c^2+d^2)\)

证明

我们令 \(\overrightarrow x=(a,b),\overrightarrow y=(c,d)\)。原式变为:\(\overrightarrow x \overrightarrow y \ge \frac{\sqrt{2}}{2}\sqrt{|\overrightarrow x||\overrightarrow y|}\)。那么就有:\(\cos<\overrightarrow x,\overrightarrow y>=\frac{\overrightarrow x \overrightarrow y}{\sqrt{|\overrightarrow x||\overrightarrow y|}} \ge \frac{\sqrt{2}}{2}\)

\(\overrightarrow x\)\(\overrightarrow y\) 的夹角为 \(45\) 度。然后我们发现,\(11\) 个实数中必定有至少 \(6\) 个正数或负数,故我们只需选择正负性相同的 \(4\) 个数字,这样两条向量一定在同一象限。因为我们有在同一象限的 \(3\) 条向量,每两条之间最大夹角小于 \(45\) 度。故得证。

容斥原理

对于一个集合 \(S\) 的一部分子集构成的簇 \(P\) 有:

\[|\bigcup\limits_{T\in P}T|=\sum\limits_{Q \subseteq P}(-1)^{|Q|-1}|\bigcap\limits_{T \in Q}T| \]

基本容斥原理为高中必学内容,这里对此不过多阐述。

二项式反演

结论

\[\begin{aligned} F(n)&=\sum\limits_{i=m}^{n}{n \choose i}G(i) \\ G(n)&=\sum\limits_{i=m}^{n}(-1)^{n-i}{n \choose i} F(i) \\ F(n)&=\sum\limits_{i=m}^{n}{i \choose m}G(i) \\ G(n)&=\sum\limits_{i=m}^{n}(-1)^{i-m}{i \choose m} F(i) \\ \end{aligned} \]

证明

\(F(n)=\sum\limits_{i=m}^n\dbinom ni\sum\limits_{j=m}^i(-1)^{i-j}\dbinom ijF(j)\)

\(=\sum\limits_{j=m}^nF(j)\sum\limits_{i=j}^n\dbinom ni\dbinom ij(-1)^{i-j}\)

\(=\sum\limits_{j=m}^nF(j)\sum\limits_{i=j}^n\dbinom nj\dbinom {n-j}{i-j}(-1)^{i-j}\)

\(=\sum\limits_{j=m}^n\dbinom nj F(j)\sum\limits_{i=j}^n\dbinom {n-j}{i-j}(-1)^{i-j}\)

\(=\sum\limits_{j=m}^n\dbinom nj F(j)\sum\limits_{i=0}^{n-j}\dbinom {n-j}{i}(-1)^{i}\)

\(=\sum\limits_{j=m}^n\dbinom nj F(j)[n=j]\)

\(=F(n)\)

第二种形式证明类似。

练习七 BZOJ2839 集合计数(P10596)

\(n\) 个元素,问有多少种选择若干个子集的方案,使得选出的子集的交集恰好为 \(k\)

\(0 < k \le n \le 10^6\)

我们先考虑子集的交集大小至少为 \(i\) 的方案,记为 \(F(i)\),那么相当于先挑出 \(i\) 个,再从 \(n-i\) 个中计算出剩余元素的子集的数量即为 \(2^{n-i}\),然后我们需要在这些剩余子集中的挑选子集方案,即为 \(2^{2^{n-i}}\),考虑到当剩余子集为空时,方案就为 \(i\) ,舍去,所以可得 \(F(i)={n \choose i}(2^{2^{n-i}}-1)\)

然后我们考虑答案函数 \(G(k)\),因为 \(F(i)\) 在求解时会对所有交集大小大于等于 \(i\) 的情况计数,理想情况下应该计数 \(1\) 次,但是经过画图可以发现,当我们处理类似 \(G(i+1)\) 的情况时,其也会对 \(F(i)\) 产生贡献,贡献为 \({i+1 \choose i}\),所以可以得出结论:

\[F(i)=\sum\limits_{j=i}^{n}{j \choose i}G(j) \]

进行二项式反演可得:

\[\begin{aligned} G(k)&=\sum\limits_{i=k}^{n}{i \choose k}(-1)^{i-k}F(i)\\ &=\sum\limits_{i=k}^{n}(-1)^{i-k}{i \choose k}{n \choose i}(2^{2^{n-i}}-1) \end{aligned} \]

现在就可以解决了。

练习八 BZOJ3622 已经没有什么好害怕的了(P4859)

有两个序列 \(a_i,b_i\) 保证所有元素互不相同。你需要重排 \(b\) 序列,使得恰好有 \(k\)\(i\) 满足 \(a_i>b_i\)。,求方案数。

\(0<k\leq n\leq2000\)

先将 \(a\) 序列排序,使其单调上升。

考虑 \(dp_{i,j}\) 表示考虑前 \(i\) 对数,恰有 \(j\)\(a_i>b_i\) ,这样无法转移。

还是先考虑前 \(i\) 个中至少 \(j\)\(a_i>b_i\),设为 \(dp_{i,j}\),那么就有

\[dp_{i,j}=dp_{i-1,j}+dp_{i-1,j-1}*(cnt(a_i)-j+1) \]

\(cnt(a_i)\) 表示在当前 \(i\) 位置,有多少个 \(b\) 满足 \(a_i>b\)

然后设 \(F(i)\) 表示钦定 \(i\) 对符合条件的方案数,\(G(i)\) 表示恰好 \(i\) 对的方案数。在当前位置,由于钦定 \(i\) 对符合,所以剩下的数随便排序,就为 \(A_{n-i}^{n-i}=(n-1)!\),就有:

\[(n-i)!dp_{n,i}=F(i)=\sum\limits_{j=i}^{n}{j \choose i}G(j) \]

反演可得:

\[\begin{aligned} G( k)&=\sum\limits_{i=k}^{n}{i \choose k}(-1)^{i-k}F(i) \\ &=\sum\limits_{i=k}^{n}{i \choose k}(-1)^{i-k}(n-i)!dp_{n,i} \end{aligned} \]

然后就能够解决啦。

练习九 CF997C Sky Full of Stars

有一个 \(n\times n\) 的矩阵,将其三染色,使得至少有一行或者一列同色,问方案数。

\(n\leq10^6\)

我们先钦定有 \(i\)\(j\) 列同色,记为 \(F(i,j)\)

\[F(i,j)= \begin{cases} 3^{(n-i)n+i}{n \choose i} & j=0 \\ 3^{(n-j)n+j}{n \choose j} & i=0 \\ 3^{(n-i)(n-j)+1}{n \choose i}{n \choose j} & i\ne 0,j\ne 0 \\ \end{cases} \]

考虑恰好有 \(i\)\(j\) 列同色,记为 \(G(i,j)\)

我们需要求至少一行一列,所以可以用 \(全集-G(0,0)\)

\[\begin{aligned} &F(x,y)=\sum\limits_{i=x}^{n}\sum\limits_{j=y}^{n}{i \choose x}{j \choose y}G(i,j) \\ &G(x,y)=\sum\limits_{i=x}^{n}\sum\limits_{j=y}^{n}(-1)^{i+j-x-y}{i \choose x}{j \choose y}F(i,j) \\ &G(0,0)=3^{n^2}+\sum\limits_{i=1}^{n}(-1)^{n-i}{n \choose i}(F(0,i)+F(i,0))+\sum\limits_{i=1}^{n}\sum\limits_{j=1}^{n}(-1)^{2n-i-j}{n \choose i}{n \choose j}F(i,j) \\ &G(0,0)=3^{n^2}+\sum\limits_{i=1}^{n}(-1)^{n-i}{n \choose i}(F(0,i)+F(i,0))+\sum\limits_{i=1}^{n}\sum\limits_{j=1}^{n}(-1)^{i+j}{n \choose i}{n \choose j}F(i,j) \\ \end{aligned} \]

\(F(i,j)\) 代入原式子。后面那坨东西即为:

\[\begin{aligned} &=\sum\limits_{i=1}^{n}\sum\limits_{j=1}^{n}(-1)^{i+j}{n \choose i}{n \choose j}3\times 3^{(n-i)(n-j)} \\ &=3^{n^2+1}\sum\limits_{i=1}^{n}{n \choose i}(-1)^i3^{-in}\sum\limits_{j=1}^{n}{n \choose j}(-1)^j3^{-jn}3^{ij} \\ \end{aligned} \]

现在发现 \(3^{ij}\) 是最不好处理的,因为它使得不能使用二项式定理,先考虑这个的处理方法。

\[\begin{aligned} &=3^{n^2+1}\sum\limits_{i=1}^{n}{n \choose i}(-1)^i3^{-in}\sum\limits_{j=1}^{n}{n \choose j}(-1)^j3^{j(i-n)} \\ &=3^{n^2+1}\sum\limits_{i=1}^{n}{n \choose i}((-1)^i3^{-in}(1-3^{(i-n)})^n-1) \\ G(0,0)&=3^{n^2}+\sum\limits_{i=1}^{n}(-1)^{n-i}{n \choose i}(F(0,i)+F(i,0))+(-1)^i3^{-in}\sum\limits_{j=1}^{n}{n \choose j}(-1)^j3^{-jn}3^{ij} \end{aligned} \]

现在就可以处理了。

练习十(第二类斯特林数通项求法)

\({n\brace m}\) 表示把 \(n\) 个不同的物品划分为 \(m\) 个集合构成簇的方案数(不允许空集)。

我们先设 \(F(n,m)={n \brace m}\)\(G(n,m)\) 表示允许存在空集时的方案数。

易得 \(G(n,m)=\frac{m^n}{m!}\)

钦定非空集合数,可以有: \(G(n,m)=\sum\limits_{i=1}^{m}{m \choose i}F(n,i)。\)

进行反演可得:\(F(n,m)=\sum\limits_{i=1}^{m}{m \choose i}(-1)^{m-i}G(n,i)。\)

代入可得:\({n\brace m} = f_{n,m}=\sum\limits_{i=1}^m{(-1)^{m-i}\binom mi\frac {i^n}{i!}}=\sum\limits_{i=1}^m{(-1)^{m-i}\frac{i^n}{i!(m-i)!}}\)

这也是第二类斯特林数的通项公式。

卡特兰数

应用

Catalan 数列 \(H_n\) 是以下问题的方案数:

  1. 有一个大小为 \(n\times n\) 的方格图,左下角为 \((0, 0)\) 右上角为 \((n, n)\),从左下角开始每次都只能向右或者向上走一单位,不走到对角线 \(y=x\) 上方(但可以触碰)的情况下到达右上角有多少可能的路径?
  2. 在圆上选择 \(2n\) 个点,将这些点成对连接起来使得所得到的 \(n\) 条线段不相交的方法数?
  3. 一个栈的进栈序列为 \(1,2,3, \cdots ,n\) 有多少个不同的出栈序列?
  4. \(n\) 个结点可构造多少个不同的二叉树?
  5. \(n\) 对括号能组成的括号序列数?

递归/组合公式

\[\begin{aligned} H_n&=\begin{cases} \sum_{i=0}^{n-1}H_iH_{n-i-1}&(n\ge 2)\\ 1&(n=0,1) \end{cases}\\ &=\binom{2n}{n}-\binom{2n}{n-1} \end{aligned} \]

通项公式

\[H_n=\frac{{2n \choose n}}{n+1} \]

证明

\[H_n=\sum_{i=0}^{n-1}H_{i}H_{n-i-1} \quad (n\ge 2) \]

其中 \(H_0=1,H_1=1\)。设它的普通生成函数为 \(H(x)\),利用卷积,得到它的一个方程。

\[\begin{aligned} H(x)&=\sum_{n\ge 0}H_nx^n\\ &=1+\sum_{n\ge 1}\sum_{i=0}^{n-1}H_ix^iH_{n-i-1}x^{n-i-1}x\\ &=1+x\sum_{i\ge 0}H_{i}x^i\sum_{n\ge 0}H_{n}x^{n}\\ &=1+xH^2(x) \end{aligned} \]

解得

\[H(x)=\frac{1\pm \sqrt{1-4x}}{2x} \]

那么这就产生了一个问题:我们应该取哪一个根呢?我们将其分子有理化:

\[H(x)=\frac{2}{1\mp \sqrt{1-4x}} \]

代入 \(x=0\),我们得到的是 \(H(x)\) 的常数项,也就是 \(H_0\)。当

\(H(x)=\dfrac{2}{1+\sqrt{1-4x}}\) 的时候有 \(H(0)=1\),满足要求。而另一个解会出现分母为 \(0\) 的情况(不收敛),舍弃。

因此我们得到了卡特兰数生成函数的封闭形式:

\[H(x)=\frac{1- \sqrt{1-4x}}{2x} \]

接下来我们要将其展开。使用牛顿二项式定理。

\[\begin{aligned} (1-4x)^{\frac{1}{2}} &=\sum_{n\ge 0}\binom{\frac{1}{2}}{n}(-4x)^n\\ &=1+\sum_{n\ge 1}\frac{\left(\frac{1}{2}\right)^{\underline{n}}}{n!}(-4x)^n \end{aligned} \]

其中

\[\begin{aligned} \left(\frac{1}{2}\right)^{\underline{n}} &=\frac{1}{2}\frac{-1}{2}\frac{-3}{2}\cdots\frac{-(2n-3)}{2}\\ &=\frac{(-1)^{n-1}(2n-3)!!}{2^n}\\ &=\frac{(-1)^{n-1}(2n-2)!}{2^n(2n-2)!!}\\ &=\frac{(-1)^{n-1}(2n-2)!}{2^{2n-1}(n-1)!} \end{aligned} \]

于是

\[\begin{aligned} (1-4x)^{\frac{1}{2}} &=1+\sum_{n\ge 1}\frac{(-1)^{n-1}(2n-2)!}{2^{2n-1}(n-1)!n!}(-4x)^n\\ &=1-\sum_{n\ge 1}\frac{(2n-2)!}{(n-1)!n!}2x^n =1-\sum_{n\ge 1}\binom{2n-1}{n}\frac{1}{(2n-1)}2x^n \end{aligned} \]

带回原式得到

\[\begin{aligned} H(x)&=\frac{1- \sqrt{1-4x}}{2x}=\frac{1}{2x}\sum_{n\ge 1}\binom{2n-1}{n}\frac{1}{(2n-1)}2x^n\\ &=\sum_{n\ge 1}\binom{2n-1}{n}\frac{1}{(2n-1)}x^{n-1}=\sum_{n\ge 0}\binom{2n+1}{n+1}\frac{1}{(2n+1)}x^{n}\\ &=\sum_{n\ge 0}\binom{2n}{n}\frac{1}{n+1}x^{n}\\ \end{aligned} \]

这样我们就得到了卡特兰数的通项公式。

Min/Max容斥

定义

公式

\[\max{S}=\sum\limits_{T\subseteq S}{(-1)^{|T|-1}\min{T}} \\ \max_{k_{th}}{S}=\sum_{T\subseteq S}{(-1)^{|T|-k}\binom{|T|-1}{k-1}\min{T}} \]

\(min/max\) 调换也成立

证明1(其实是我懒得写了摘的)

\(\max\limits_{k_{th}}{S}=\sum\limits_{T\subseteq S}{(-1)^{|T|-k}\dbinom {|T|-1}{k-1}\min T}\)

\(=\sum\limits_{x\in S}x\sum\limits_{x\in T\subseteq S}{(-1)^{|T|-k}\dbinom {|T|-1}{k-1}[\min{T}=x]}\)

\(f(x)\) 表示 \(S\) 中大于 \(x\) 的元素构成的集合。

\(=\sum\limits_{x\in S}{x}\sum\limits_{x\in T\subseteq f(x)}{(-1)^{|T|-k}\dbinom{|T|-1}{k-1}}\)

枚举 \(|T|\):

\(=\sum\limits_{x\in S}{x\sum\limits_{l = 1}^{|f(x)|}{(-1)^{l-k}\dbinom{|f(x)|-1}{l-1}\dbinom{l-1}{k-1}}}\)

\(=\sum\limits_{x\in S}{x\sum\limits_{l=1}^{|f(x)|}{(-1)^{l-k}\dbinom {|f(x)|-1}{k-1}\dbinom{|f(x)|-k}{l-k}}}\)

\(=\sum\limits_{x\in S}{x\dbinom {|f(x)|-1}{k-1}\sum\limits_{l=1} ^{|f(x)|}{(-1)^{l-k}\dbinom {|f(x)|-k}{l-k}}}\)

易知 \(|f(x)|< k\) 时无贡献。

\(=\sum\limits_{x\in S}{x\dbinom {|f(x)|-1}{k-1}\sum\limits_{l=0}^{|f(x)|-k}(-1)^l\dbinom{|f(x)|-k}{l}}\)

\(=\sum\limits_{x\in S}{x\dbinom {|f(x)|-1}{k-1}[|f(x)|=k]}\)

\(=\max\limits_{k_{th}}{S}\)

证明2

设存在一个以集合大小为自变量的函数 \(f\) 满足 \(\max{S}=\sum\limits_{T \subseteq S}f(|T|)\min T\)

\(S\) 中元素从大到小排列为 \(x_1,x_2,\cdots,x_m\),则对于 \(x_i\),其在左侧的贡献是 \(i=1\),在右侧的贡献为 \(\sum\limits_{j=0}^{i-1}{i-1 \choose j}f(j+1)\)

若等式成立,必有 \([i=1]=\sum\limits_{j=0}^{i-1}{i-1 \choose j}f(j+1)\)

\(F(i)=[i+1=1]\) (即 \([i=1]=F(i-1)\)),\(G(i)=f(i+1)\),则 \(F(i)=\sum\limits_{j=0}^{i}{i \choose j}G(j)\)

反演一下,得

\[G(i)=\sum\limits_{j=0}^{i}{i \choose j}(-1)^{i-j}F(j) \]

因为 \(F(i)\) 只在 \(i=0\) 时有值,所以 \(G(i)=(-1)^i\)

故有 \(f(i)=G(i-1)=(-1)^{i-1}\)

因而构造成立。

\(kth\min-\max\) 证明同理

应用

Min-Max 容斥及推广常用于解决 元素都出现的期望时间 的问题,处理方法:

\(t_i\) 表示第 \(i\) 个元素出现的时间,则:

  • \(\max(S)\) 表示 \(S\)\(t\) 的最大值,即所有元素出现的时间。
  • \(\min(S)\) 表示 \(S\)\(t\) 的最小值,即至少一个元素出现的时间。

根据 Min-Max 容斥可以用 \(\min(S)\)\(\max(S)\)

等式两边同时取期望,由于期望的线性运算,可以直接放到 \(\sum\) 中,即

\[E(\max(S))=\sum\limits_{T \subseteq S}(-1)^{|T|-1}E(\min(T)) \]

然后发现 \(E(\min T)\) 很好求,就是一个元素出现的期望时间。

即可求解。

练习十一

给定三个序列 \(a_i,b_i,c_i\),求

\[\sum\limits_{1\leq i<j\leq n}{\max{a_i+a_j,b_i+b_j,c_i+c_j}-\min{a_i+a_j,b_i+b_j,c_i+c_j}} \]

\(n\leq2\times10^5\)

先用容斥拆开 \(max\)

\[\begin{aligned} &\ \ \ \ \max a_i+a_j,b_i+b_j,c_i+c_j \\ &=a_i+a_j+b_i+b_j+c_i+c_j \\ &\ \ \ \ -\min{a_i+a_j,b_i+b_j}-\min{a_i+a_j,c_i+c_j}-\min{b_i+b_j,c_i+c_j} \\ &\ \ \ \ +\min{a_i+a_j,b_i+b_j,c_i+c_j} \end{aligned} \]

最后一项与原式抵消掉,剩下的两种 \(min\) 中,第一种可以直接求出,第二种可以化成以下形式:

\[\min(a,b)=a[a<b] \]

所以可以变成:

\[\begin{aligned} -a_i-a_j[a_i+a_j<b_i+b_j]-a_i-a_j[a_i+a_j<c_i+c_j]-b_i-b_j[b_i+b_j<c_i+c_j] \\ -a_i-a_j[a_i-b_i<b_j-a_j]-a_i-a_j[a_i-c_i<c_j-a_j]-b_i-b_j[b_i-c_i<c_j-b_j] \end{aligned} \]

这个实质就是求顺序对(二维偏序),总复杂度 \(O(n \log n)\)

练习十二

\(n\) 个元素,每次会随机选择一个,有 \(p_i\) 的概率选择第 \(i\) 个,问第一次所有元素都被选择过的期望时间。

\(1\leq n\leq20\)

设每个元素被选择时的时间为 \(t_i\),那么所有元素被选就是 \(t_{maxS}\),套上公式:

\[E(\max{S})=\sum\limits_{T\subseteq S}{(-1) ^{|T|-1}E(\min{T})} \\ \]

\(E(\min T)\) 的含义实际上就是第一次选到 \(T\) 中元素的期望时间,一次选中的概率是 \(\frac{1}{\sum\limits_{x\in T}p_x}\) ,期望时间就是其倒数 \(\sum\limits_{x\in T}p_x\)

然后套入式子计算即可,\(O(n2^n)\)

练习十三 P4707 重返降世

\(n\) 个元素,每次会随机选择一个,有 \(\frac {p_i} M\) 的概率选择第 \(i\) 个,问第一次有 \(k\) 元素被选择过的期望时间。

\(1\leq l\leq n\leq 10^3,n-10\leq k\leq n,\sum\limits_{i=1}^n{p_i}=M\leq10^4\)

相当于就是求 \(t_i\)\(k\) 小,思路大体上与上一题差不多,我们不妨改成求 \(n-k\) 大,让 \(k=n-k\),就能得出式子:

\[\begin{aligned} E(\max\limits_{k_{th}}S)&=\sum\limits_{T\subseteq S}(-1)^{|T|-k}E(\min T) \\ &=\sum\limits_{T\subseteq S}(-1)^{|T|-k}{|T|-1 \choose k-1}\frac{M}{\sum\limits_{x\in T}p_x} \end{aligned} \]

现在麻烦的是 \(\frac{M}{\sum\limits_{x\in T}p_x}\),我们发现所有 \(p_i\) 之和不会超过 \(M\),所以可以考虑计算每一种 \(\sum\limits_{x\in T}p_x\) 作为分母的项的系数之和。考虑设 \(dp_{i,j}\) 表示前 \(i\) 个,分母和为 \(j\)​ 的项的系数和。

在转的时候会发现转不了,所以再设一个参数 \(l=|T|\)

那么就有 \({|T|-1 \choose k-1}=\frac{|T|-1}{|T|-k}{|T|-2 \choose k-1}\)

\[dp_{i,j,l}=dp_{i-1,j}-\frac{l-1}{l-k}dp_{i-1,j-p_i,l-1} \]

这个复杂度过不了,所以换方法,因为 \({|T|-1 \choose k-1}={|T|-2 \choose k-1}+{|T|-2 \choose k-2}\),所以:

\[dp_{i,j,l}=dp_{i-1,j,l}+dp_{i-1,j-p_i,l-1}-dp_{i-1,j-p_i,l} \\ \]

这样就是 \(O(nmk)\) 的了。

第二类斯特林数

含义

\({n \brace k}\) 表示将 \(n\) 个元素划分成 \(k\)\(\textbf{非空子集}\)的方案数。

特殊值

\[\begin{aligned} {n \brace 0}=[n=0],{n \brace 1}={n \brace n}=1(n>0) \\ {n \brace 2}=2^{n-1}-1(n>0),{n \brace n-1}={n \choose 2} \end{aligned} \]

递推式

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

即考虑第 \(n\) 个元素放在哪个集合。要么在已经有的 \(k\) 个非空集合里选一个放进去,要么自己单开一个新的集合。

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

第二类斯特林数生成函数

一个盒子装 \(n\) 个物品且盒子非空的方案数是 \([n>0]\)。我们可以写出它的EGF为

\[F(x)= \sum_{n=1}^{\infty}\frac{x^n}{n!}=e^x-1 \]

由 EGF 卷积的组合意义,\(F^k(x)\) 就是 \(n\) 个有标号物品放到 \(k\)\(\textbf{有}\) 标号盒子里的EGF。而第二类斯特林数是 \(n\) 个有标号物品放到 \(k\)\(\textbf{无}\) 标号盒子里的方案数,所以要再除以一个 \(k!\)

\[\frac{1}{n!}{n \brace k} = [x^n]\frac{(e^x-1)^k}{k!} \]

通项公式

\[{n \brace k}={1 \over k!}\sum\limits_{i=0}^{k}(-1)^i{k \brace i}(k-i)^n=\sum\limits_{i=0}^{k}{{(-1)^{k-i}i^n} \over {i!(k-i)!}} \]

证明

设将 \(n\) 个有标号物品放到 \(k\) 个有标号盒子(允许空盒子)的方案数为 \(G_i\);将 \(n\) 个有标号物品放到 \(k\) 个有标号盒子(不允许空盒子)的方案数为 \(F_i\)

\[G_i = k^n,\ G_i = \sum_{j=0}^i \binom{i}{j}F_j \]

由二项式反演

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

\(F_k\) 是有标号的盒子,第二类斯特林数是无标号盒子再除以一个 \(k!\)

\[\begin{Bmatrix}n\\k\end{Bmatrix} = \sum_{i=0}^k\frac{(-1)^{k-i}i^n}{i!(k-i)!} \]

第一类斯特林数

含义

\(\Large{n \brack k}\) 表示将 \(n\) 个元素排成 \(k\)\(\textbf{轮换}\) 的方案数。也即所有 \(n!\) 个排列中,构成的置换有 \(k\) 个环的排列数。

特殊值

\[{n \brack 0} = [n=0],\quad {n \brack n} = 1(n>0)\\ {n \brack 1} = (n-1)!(n>0),\quad {n \brack n-1} = \binom{n}{2} \]

递推式

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

即考虑第 \(n\) 个元素放在哪个轮换里。要么在已经有的 \(k\) 个轮换里选一个位置插进去,方案数是 \(n-1\);要么自己单开一个新的轮换。

生成函数

类似第二类斯特林数地,我们先考虑 \(1\) 个盒子,即 \(k=1\)\(\begin{bmatrix}n\\1\end{bmatrix}=(n-1)!\) 的 EGF:

\[F(x)=\sum_{n=1}^\infty(n-1)!\dfrac{x^n}{n!}=\sum\limits_{n=1}^\infty \dfrac{x^n}{n} = -\ln(1-x) \]

那么 \(n\) 个元素组成 \(k\)\(\textbf{无}\) 标号轮换的 EGF 为

\[\frac{F^k(x)}{k!}=\frac{(-1)^k\ln^k(1-x)}{k!} \]

\[\frac{1}{n!}{n \brack k}= [x^n]\frac{(-1)^k\ln^k(1-x)}{k!} \]

\(Ex\):第一类斯特林数没有实用的通项公式。

特殊等式行之和

我们知道一个有 \(n\) 个元素的排列和一个 \(n\) 个元素的置换一一对应,于是对所有置换中的轮换个数求和,我们有

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

通常幂、下降幂、上升幂转换

互相转换公式

\[\begin{aligned} x^{\overline{n}}&=\sum\limits_{i=0}^{n}{n \brack k}x^k \\ x^{\underline{n}}&=\sum\limits_{k=0}^{n}(-1)^{n-k}{n \brack k}x^k \\ x^n&=\sum\limits_{k=0}^{n}{n \brace k}x^{\underline{k}}=\sum\limits_{k=0}^{n}{n \brace k}{x \choose k}k! \\ x^n&=\sum\limits_{k=0}^{n}{n \brace k}(-1)^{n-k}x^{\overline{k}} \end{aligned} \]

证明都可以使用数学归纳法

反转公式

把上面的式子结合起来即可。

\[\begin{aligned} \sum\limits_{k}{n \brace k}{k \brack m}(-1)^{n-k}&=[m-n] \\ \sum\limits_{k}{n \brack k}{k \brace m}(-1)^{n-k}&=[m=n] \\ \end{aligned} \]

拓展公式

  1. \[{n+1 \brace m+1} = \sum_k \binom{n}k{k \brace m} \]

组合意义:枚举 \(k\) 表示 \(n+1\) 号节点所在的集合之外剩下了 \(k\) 个节点,这 \(k\) 个节点要构成 \(m\) 个集合。

  1. \[{n+1 \brack m+1} = \sum_k{n \brack k} \binom km \]

组合意义:还是枚举 \(n+1\) 号点所在环的大小,设为 \(t+1\),那么方案数应该是 \(t! {n-t \brack m}\),这 \(t!{n-t \brack m}\) 个方案对应 \({n \brack 0},{n \brack 1},\cdots, {n \brack n}\) 的所有置换中不连接这 \(t\) 个和剩下 \(n-t\) 个点的所有置换,所以有上式。

  1. \[{n \brace m} = \sum_{k}\binom{n}{k}{k+1 \brace m+1}(-1)^{n-k} \]

  2. \[{n \brack m} = \sum_k {n+1\brack k+1}\binom km (-1)^{m-k} \]

这是前两个式子的二项式反演

  1. \[{m+n+1 \brace m}=\sum_{k=0}^m k{n+k \brace k} \]

\( \text{原式} = \sum_{k=0}^m{n+k+1 \brace k}-{n+k \brace k-1}={m+n+1 \brace m} \)

  1. \[{m+n+1 \brack m}=\sum_{k=0}^m (n+k){n+k \brack k} \]

同 5 理

斯特林反演

形式

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

证明

我们有反转公式

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

直接带入易证

也有以下形式,与二项式反演类似:

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

posted @ 2025-01-22 14:33  God_Max_Me  阅读(45)  评论(0)    收藏  举报