组合数

组合数

方便起见,我们定义:

阶乘:\(n!=\prod_{i=1}^ni=1\cdot2\cdots (n-1)\cdot n\)\(n\) 的阶乘。规定 \(0! = 1\)

下降(阶乘)幂:\(n^{\underline{m}}=\prod_{i=0}^{m-1}(n-i)=n\cdot(n-1)\cdot(n-2)\cdots (n-m+1)\)\(n\)\(m\) 次下降(阶乘)幂

加乘原理

一、加法原理

若一件事有 \(n\) 种完成方式,而每种方式有 \(m\) 种方法,那么这件事的完成方法有 \(\sum_{i=1}^nm_i\) 种。

二、乘法原理

若完成一件事有 \(n\) 个步骤,而完成每个步骤有 \(m\) 种方法,那么这件事的完成方法有 \(\prod_{i=1}^nm_i\) 种。

排列组合数

\(n\) 个互异元素中取 \(m\) 个组成的集合方案数,记为 \(C_n^m\)\(\dbinom n m\)

\[\begin{equation} \begin{split} C_n^m &=\binom n m\\ &=\binom n {n-m}\\ &=\binom {n-1} {m}+\binom {n-1} {m-1}\\ &=\frac{n!}{(n-m!)m!}\\ &=\frac{A_n^m}{m!}\\ &=\prod_{i=1}^m{\frac {n-i+1}{i}}\\ &=\frac {n-m+1}{m}\times \prod_{i=1}^{m-1}{\frac {n-i+1}{i}}\\ &=\frac {n-m+1}{m}\binom n {m-1}\\ \end{split} \end{equation}\]

\(n\) 个互异元素中按顺序选出 \(m\) 个的方案数,记为 \(A_n^m\)

\[A_n^m=n^{\underline{m}}=\frac{n!}{(n-m!)}=m!\binom{n}{m}=\prod_{i=1}^m (n-i+1) \]

隔板法

  1. (每组至少 \(1\) 个) \(n\) 个元素分成 \(k\) 组,相当于将 \(k-1\) 个隔板放在 \(n\) 个元素个 \(n-1\) 个缝隙里,方案数 \(\binom {n-1}{k-1}\)
  2. (每组至少 \(0\) 个)借 \(k\) 个元素,放在 \(k\) 组里,剩下的 \(n\) 个元素正常放,无视掉那借的 \(k\) 个元素后便是合法方案,方法数 \(\binom{n+k-1}{k-1}=\binom{n+k-1}{n}\)
  3. (第 \(i\) 组至少 \(a_i\) 个)先借 \(\sum a_i\) 个,然后问题便转化成了每组至少 \(0\) 个,那么再借 \(k\),方案数 \(\binom{n - \sum a_i + k - 1}{n - \sum a_i}\)

不相邻的排列

\(1 \sim n\)\(n\) 个自然数中选 \(k\) 个,这 \(k\) 个数中任何两个数都不相邻的组合有 \(\binom {n-k+1}{k}\) 种。

特殊排列组合

  • 任选排列: \(n\) 个元素无限制地放入 \(m\) 个容器中,每个元素有 \(m\) 种选择,按乘法原理总方案数 \(m^n\)
  • 可重排列:\(n\) 个元素中可重复地选取 \(m\) 个,总方案数为 \(n^m\)
  • 圆排列:\(n\) 个元素中选取 \(r\) 个排成一个圆的方案数称为圆排列数,记为 \(Q_n^r\) ,证明如下:

\(n\) 个人全部来围成一圈,所有的排列数记为 \(\mathrm Q_n^n\)。考虑其中已经排好的一圈,从不同位置断开,又变成不同的队列。
所以有

\[\mathrm Q_n^n \times n = \mathrm A_n^n \Longrightarrow \mathrm Q_n = \frac{\mathrm A_n^n}{n} = (n-1)! \]

由此可知部分圆排列的公式:

\[\mathrm Q_n^r = \frac{\mathrm A_n^r}{r} = \frac{n!}{r \times (n-r)!} \]

二项式定理

二项式定理阐明了一个展开式的系数:

\[(a+b)^n=\sum_{i=0}^n\binom{n}{i}a^{n-i}b^i \]

扩展为多项式:(设 \(n\) 为正整数, \(x_i\) 为实数)

\[(x_1 + x_2 + \cdots + x_t)^n = \sum_{满足 n_1 + \cdots + n_t=n 的非负整数解} \binom{n}{n_1,n_2,\cdots,n_t} x_1^{n_1}x_2^{n_2}\cdots x_t^{n_t} \]

其中的 \(\binom{n}{n_1,n_2,\cdots,n_t}\) 是多项式系数,它的性质:

\[\sum{\binom{n}{n_1,n_2,\cdots,n_t}} = t^n \]

二项式反演

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

证明:

\[\begin{aligned} \sum_{i=0}^n{n\choose i}(-1)^{n-i}f(i)&=\sum_{i=0}^n{n\choose i}(-1)^{n-i}\sum_{j=0}^i{i\choose j}g(j)\\ &=\sum_{i=0}^n\sum_{j=0}^i{n\choose i}{i\choose j}(-1)^{n-i}g(j)\\ &=\sum_{i=0}^n\sum_{j=0}^i{n\choose j}{n-j\choose i-j}(-1)^{n-i}g(j)\\ &=\sum_{j=0}^n{n\choose j}g(j)\sum_{i=j}^n{n-j\choose i-j}(-1)^{n-i}\\ &=\sum_{j=0}^n{n\choose j}g(j)\sum_{i=0}^{n-j}{n-j\choose i}(-1)^{n-j-i}\\ &=\sum_{j=0}^n{n\choose j}g(j)\cdot 0^{n-j}\\ &=g(n)\\ \end{aligned} \]

在上面的证明中,为了方便,我们认为 \(0^0 = 1\)

其他性质

  1. \(\sum_{i=1}^n\binom{n}{i}=2^n\)
  2. \(\sum_{i=1}^n(-1)^i\binom{n}{i}=[n=0]\)
  3. \(\sum_{i=1}^n\binom{n}{i}\binom m {k-i}=\binom{n+m}k\)
  4. \(\sum_{i=1}^n{\binom{n}{i}}^2=\binom {2n}n\)
  5. \(\sum_{i=0}^ni\binom{n}{i}=n2^{n-1}\)
  6. \(\sum_{i=0}^ni^2\binom{n}{i}=n(n+1)2^{n-2}\)
  7. \(\sum_{l=0}^n\binom{l}{k} = \binom{n+1}{k+1}\)
  8. \(\binom{n}{r}\binom{r}{k} = \binom{n}{k}\binom{n-k}{r-k}\)
  9. \(\sum_{i=0}^n\binom{n-i}{i}=F_{n+1}\) (其中 \(F\) 是斐波那契数列)
  10. \(\binom{n+k}{k}^2=\sum_{j=0}^k\binom{k}{j}^2\binom{n+2k-j}{2k}\)

卢卡斯定理

在模 \(p\) 意义下求 \(\binom{n}{m}\%p\) :

  1. \(n,m\) 取值范围较小,直接预处理阶乘

  2. \(n,m\) 取值范围较大时预处理不可接受,若 \(p\) 较小且为质数,考虑结合模性质优化:

对于素数 \(p\),有:

\[\binom{n}{m}\equiv \binom{\lfloor n/p\rfloor}{\lfloor m/p\rfloor}\binom{n\bmod p}{m\bmod p}\pmod p. \]

其中,当 \(n<m\) 时,二项式系数 \(\dbinom{n}{m}\) 规定为 \(0\)

时间复杂度 \(O(f(p)+g(n)\log n)\),其中 \(f(n)\) 为预处理组合数的复杂度,\(g(n)\) 为单次处理组合数的复杂度。

具体的证明可以参考 oi-wiki 的证明。

卡特兰数

卡特兰数是一种特殊的组合递推数列,记为 \(H_n\),应用十分广泛。

一、定义

  1. 卡特兰数的计算公式

\[H_n=\frac{2n\choose n}{n+1}(n\ge2,n\in \mathbb{N_+}) \]

  1. 其他的卡特兰数公式

\[H_n= \begin{cases} \sum\limits_{i=1}^nH_{i-1}H_{n-i}&n\ge2,n\in\mathbb{N_+}\\ 1&n=0,1 \end{cases} \]

\[H_n=\frac{H_{n-1}(4n-2)}{n+1}\\ \]

\[H_n={2n\choose n}-{2n\choose n-1} \]

容斥原理

设全集 \(U\) 中元素有 \(n\) 种不同的属性,而第 \(i\) 种属性为 \(P_i\),拥有属性 \(P_i\) 的元素构成集合 \(S\),那么

\[\begin{split} \left|\bigcup_{i=1}^{n}S_i\right| &=\sum_{i}|S_i|-\sum_{i<j}|S_i\cap S_j|+\sum_{i<j<k}|S_i\cap S_j\cap S_k|-\cdots\\ &\quad +(-1)^{m-1}\sum_{a_i<a_{i+1} }\left|\bigcap_{i=1}^{m}S_{a_i}\right|+\cdots+(-1)^{n-1}|S_1\cap\cdots\cap S_n| \\ &=\sum_{m=1}^n(-1)^{m-1}\sum_{a_i<a_{i+1} }\left|\bigcap_{i=1}^mS_{a_i}\right| \end{split}\]

抽屉原理

  1. 简单情况

\(n+1\) 个物体,划分为 \(n\) 组,那么有至少一组有两个(或以上)的物体。

证明考虑反证法:假如每个分组有至多 \(1\) 个物体,那么最多有 \(1\times n\) 个物体,而实际上有 \(n+1\) 个物体,矛盾。

  1. 推广

\(n\) 个物体,划分为 \(k\) 组,那么至少存在一个分组,含有大于或等于
\(\left \lceil \dfrac{n}{k} \right \rceil\) 个物品。

推广的形式也可以使用反证法证明:若每个分组含有小于
\(\left \lceil \dfrac{n}{k} \right \rceil\) 个物体,则其总和

\[S\leq (\left \lceil \dfrac{n}{k} \right \rceil -1 ) \times k=k\left\lceil \dfrac{n}{k} \right\rceil-k < k(\dfrac{n}{k}+1)-k=n \]

矛盾。

此外,划分还可以弱化为覆盖结论不变。
给定集合 \(S\), 一个 \(S\) 的非空子集构成的簇 \(\{A_1,A_2\ldots A_k\}\)

  • 若满足 \(\bigcup_{i=1}^k A_i\) 则称为 \(S\) 的一个覆盖(cover)。
  • 若一个覆盖还满足 \(i\neq j\to A_i\cap A_j=\varnothing\) 则称为 \(S\) 的一个划分。

抽屉原理可以有如下叙述:对于 \(S\) 的一个覆盖 \(\{A_1,A_2\ldots A_k\}\) 有至少一个集合 \(A_i\) 满足 \(\left\vert A_i \right\vert \geq \left\lceil \dfrac{\left\vert S \right\vert}{k} \right\rceil\)

posted @ 2025-08-20 20:54  badn  阅读(65)  评论(0)    收藏  举报