到处都能见到它的身影,它是一切数数题的基础。

概念基础

基本定义与一些常见公式与方法。

排列数

nn 个不同元素中,任取 mmmnm\leqslant n)个元素按照一定的顺序排成一列,方案个数记作 AnmA_{n}^{m},有 Anm=n!(nm)!A_{n}^{m}=\cfrac{n!}{(n-m)!}

一个有限集合 SS 到自身的双射称为 SS 的一个置换,集合 S=a1,,anS={a_1,\cdots,a_n} 的置换可以表示为:

f=(a1,a2,,anap1,ap2,,apn)f=\begin{pmatrix}a_1,a_2,\dots,a_n\\ a_{p_1},a_{p_2},\dots,a_{p_n} \end{pmatrix}

是将 aia_i 映射为 apia_{p_i},这样 pp1n1\cdots n 的一个排列,SS 上的所有置换的数量为 n!n!

置换的过程可以使用有向图来理解,连边 ipii\rightarrow p_i,就是所有点移动 11 的距离。置换中形成一个环的称为置换环,对于大小为 1,21,2 的置换环,原排列和置换显然是一样的。

对于两个置换 f,gf,g 的乘积记作 fgf\circ g,代表先通过 ff 的映射,再通过 gg 的映射。

一个排列中的逆序对个数,也叫做反序数,如果是偶数就是偶排列,奇数则是奇排列。

对于一个排列 1,,n1,\cdots,n,如果将任意两个数 i,ji,j 交换,其它数保持不动,就会得到一个新的排列,那么这样一个变换叫做对换,用 (i,j)(i,j) 表示。

组合数

nn 个不同元素中,任取 mmmnm\leqslant n)个元素按照任意的顺序组成一个集合,方案个数记作 (nm)\binom n m。组合数同时也是二项式系数,当 m<0m<0 时,组合数没有定义。

(nm)=n!(nm)!m!=nmm!(nm)=(n1m)+(n1m1)\binom n m = \frac{n!}{(n-m)!m!}=\frac {n^{\underline m}} {m!}\\ \binom n m = \binom {n-1} m + \binom {n-1}{m-1}

组合数有以下性质 / 恒等式:

  1. (nm)=(nnm)\dbinom n m = \dbinom n {n - m}
  2. (nk)=nk+1k(nk1)\dbinom{n}{k}=\cfrac{n-k+1}{k}\dbinom{n}{k-1},常被用来递推组合数;
  3. (nr)(rk)=(nk)(nkrk)\dbinom{n}{r}\dbinom{r}{k}=\dbinom{n}{k}\dbinom{n-k}{r-k}
  4. 吸收恒等式(rk)=rk(r1k1)\dbinom{r}{k}=\dfrac{r}{k}\dbinom{r-1}{k-1},当二项式外有一个无用的系数时,我们可以将它“吸收”进二项式系数。
  5. 下指标求和(行求和):i=0n(ni)=2n\displaystyle \sum_{i=0}^{n}\binom{n}{i}=2^n,相当于是二项式定理中 a=b=1a=b=1。注意这个东西是很特殊的完整一行,一般的行求和是无法快速计算的。它还有变式:
    • i=0n(1)i(ni)=0\displaystyle \sum_{i=0}^{n}(-1)^i\binom{n}{i}=0,这是二项式定理中 a=1,b=1a=1,b=-1
    • i=0ni×(ni)=n2n1\displaystyle \sum_{i=0}^{n}i\times \binom{n}{i}=n2^{n-1},因为 m×(nm)=n×(n1m1)m\times \dbinom{n}{m}=n\times \dbinom{n-1}{m-1}
  6. 上指标求和(列求和):i=0n(im)=(n+1m+1)\displaystyle \sum_{i=0}^{n}\binom{i}{m}=\binom{n+1}{m+1},可以看作是枚举第 m+1m+1 个数的位置 i+1i+1
  7. 对角线求和i=0n(m+ii)=(m+n+1n)\displaystyle\sum_{i=0}^{n}\binom{m+i}{i}=\binom{m+n+1}{n},反复利用 Cnm=Cn1m+Cn1m1C_{n}^{m}=C_{n-1}^{m}+C_{n-1}^{m-1} 即可证明。
  8. 范德蒙德卷积i=0k(ni)(mki)=(n+mk)\displaystyle \sum_{i=0}^k\binom{n}{i}\binom{m}{k-i}=\binom{n+m}{k}。从组合意义上很容易证明(枚举 nnmm 中选的个数),常用于合并组合数,考虑它的推论:
    • i=1n(ni)(ni1)=(2nn1)\displaystyle \sum_{i=1}^n\binom{n}{i}\binom{n}{i-1}=\binom{2n}{n-1},证明很简单,因为 (ni1)=(nni+1),(2nn1)=(2nn+1)\dbinom{n}{i-1}=\dbinom{n}{n-i+1},\dbinom{2n}{n-1}=\dbinom{2n}{n+1}
    • i=0n(ni)2=(2nn)\displaystyle\sum_{i=0}^n\binom{n}{i}^2=\binom{2n}{n},证明基本同理;
    • i=0m(ni)(mi)=(n+mm)\displaystyle\sum_{i=0}^m\binom{n}{i}\binom{m}{i}=\binom{n+m}{m},这个也是网格图路径计数方案
  9. Lucas 定理。若 pp 是质数,则 (nm)modp=(n/pm/p)(nmodpmmodp)modp\displaystyle\binom{n}{m}\bmod p = \binom{\left\lfloor n/p \right\rfloor}{\left\lfloor m/p\right\rfloor}\cdot\binom{n\bmod p}{m\bmod p}\bmod p,常用于 pp 较小的情况。
  10. 组合数奇偶性公式(nm)1(mod2)    n & m=m\displaystyle \binom{n}{m}\equiv 1 \pmod 2 \iff n\ \& \ m=m,使用 Lucas 定理来证明,需保证不出现 (01)\dbinom{0}{1}
  11. Kummer 定理(n+mn)\dbinom{n+m}{n} 中质因子 pp 的次数为 n+mn+m 在计算时 pp 进制意义下的进位次数,等价于 (nm)\dbinom n m 中质因子 pp 的次数等于在计算 nmn-mpp 进制意义下的借位次数。其中 pp 是素数。
  12. 上指标翻转(nk)=(1)k(kn1k)\displaystyle \binom n k = (-1)^k\binom{k-n-1}{k}

多重组合数。是指先选 n1n_1,再选 n2n_2,以此类推。有(ni=n\sum n_i = n):

(nn1,,nk)=n!i=1kni!\binom{n}{n_1,\dots,n_k}=\frac{n!}{\prod_{i=1}^k n_i!}

组合方法。在小学学过一些常用的组合方法。

nn 只兔子参观大连市第二十四中学,其中 mm 只兔子关系特别好,它们一定要站在一块。那么有多少种排列方法?

我们把这 mm 只兔子看作一只大兔子,那么总共就有 nm+1n-m+1 只兔子,排列方案数是 (nm+1)!(n-m+1)!,然而大兔子里面也有 m!m! 中方法,那么总方法数就是 (nm+1)!m!(n-m+1)!m!。这就是捆绑法

nn 只兔子参观大连市第二十四中学,其中 mm 只兔子有着不共戴天之仇,它们一定要不能站在一块。那么有多少种排列方法?

我们先把 nmn-m 只兔子给排列好,有 (nm)!(n-m)! 种方法。这些兔子之间有 (nm+1)(n-m+1) 个空(算最左和最右),再把这些不共戴天的兔子放到这些空里,有 Anm+1mA_{n-m+1}^{m} 个方法。总方案数就是 (nm)!×Anm+1m(n-m)!\times A_{n-m+1}^{m}。这就是插空法

james1 要将 nn 个相同的胡萝卜分给 mm 只兔子,他秉持雨露均沾的原则,每只兔子至少分到 11 根胡萝卜,有多少种方案?

我们先介绍隔板法(插板法),是指在 nn 个元素的 n1n-1 个空中插入 kk 个板,可以把 nn 个元素分为 k+1k+1 组。

我们把这 nn 个胡萝卜排成 11 行,当中就有 n1n-1 个空。现在往里面插入 m1m-1 个板,就可以将胡萝卜分为 mm 组,正好可以分给 mm 只兔子,而且由于不存在在同一个地方插两个板的情况,所以正好每一只兔子都能至少分到 11 根胡萝卜。那么答案就是 (n1m1)\dbinom{n-1}{m-1}

实际上这个问题相当于求不定方程 x1+x2++xm=nx_1+x_2+\cdots+x_m=n 的正整数解的数量。

如果他是个大魔王(不可能,绝对不可能),有的兔子可能 11 根胡萝卜都得不到,那么有多少种方案?

同样的方法,如果允许有兔子分到 00 根胡萝卜,我们只需要再加上 mm 根胡萝卜,就相当于刚才的问题了。答案是 (n+m1m1)=(n+m1n)\dbinom{n+m-1}{m-1}=\dbinom{n+m-1}{n}

这个问题本质上是要求 x1+x2++xm=nx_1+x_2+\cdots+x_m=n 的自然数解的数量。


Nothing built can last forever.
本站由 iznomia 使用 Stellar 1.30.4 主题创建。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。