组合数学

梦回选修 \(2\) QAQ。这东西说实话的确考察思维,而且容易和 dp 什么的综合起来难度就直接飙到 \(*3000\),但是组合数学的确是一个极其重要的部分,它可以在很多情况下帮你减少枚举次数(比如去年 T2 的哈希做法如果最后直接组合数学统计答案的话码量少了整整 \(30\) 行!),所以这也是以后的重点。

组合数学还是要写一些概念的。

加法/乘法原理

忘了就真可以 AFO 了。

排列数

\[A_n^m = \frac{n!}{(n - m)!} \]

圆排列

\[Q_n^m = \frac{A_n^m}{m} \]

组合数

\[C_n^m= \begin{pmatrix} n\\m\end{pmatrix} = \frac{A_n^m}{m!} = \frac{n!}{m!(n - m)!} \]

通常写成圆括号形式,读作“\(n\)\(m\)”。

特别地,当 \(m > n\) 时排列数和组合数都为 \(0\)

组合数有一些优美的定理:

基本性质 \(1\)

\[\begin{pmatrix} n\\m\end{pmatrix} = \begin{pmatrix} n - 1\\m\end{pmatrix} + \begin{pmatrix} n - 1\\m - 1\end{pmatrix} \]

基本性质 \(2\)

\[\begin{pmatrix} n\\m\end{pmatrix} = \begin{pmatrix} n\\n - m\end{pmatrix} \]

吸收恒等式(提取公约数):

\[\begin{pmatrix} n\\m\end{pmatrix} = \frac{n}{m}\begin{pmatrix} n - 1\\m - 1\end{pmatrix} \]

上指标求和:

\[\sum_{i = m} ^ n \begin{pmatrix} i\\m\end{pmatrix} = \begin{pmatrix} n + 1\\m + 1\end{pmatrix} \]

两边同时加上为 \(0\)\(\begin{pmatrix} m\\m + 1\end{pmatrix}\) 可以得证。

平行恒等式:

\[\sum _ {i = 0} ^ n \begin{pmatrix} m + i\\i\end{pmatrix} = \begin{pmatrix} m + n + 1\\n\end{pmatrix} \]

范德蒙德卷积:

\[\sum _{i = 0}^k \begin{pmatrix} n\\i\end{pmatrix}\begin{pmatrix} m\\k - i\end{pmatrix} = \begin{pmatrix} n + m\\k\end{pmatrix} \]

相当于枚举前 \(n\) 个数选了多少个。

推论1:

\[\sum _ {i = -r} ^ s \begin{pmatrix} n\\r + i\end{pmatrix}\begin{pmatrix} m\\s - i\end{pmatrix} = \begin{pmatrix} n + m\\r + s\end{pmatrix} \]

推论2:

\[\sum_{i = 1} ^ n \begin{pmatrix} n\\i\end{pmatrix}\begin{pmatrix} n\\i - 1\end{pmatrix} = \begin{pmatrix} 2n\\n - 1\end{pmatrix} \]

推论3:

\[\sum_{i = 0} ^ n \begin{pmatrix} n\\i\end{pmatrix}^2 = \begin{pmatrix} 2n\\n\end{pmatrix} \]

推论4:

\[\sum _ {i = 0} ^ m \begin{pmatrix} n\\i\end{pmatrix}\begin{pmatrix} m\\i\end{pmatrix} = \begin{pmatrix} n + m\\m\end{pmatrix} \]

这是一个网格图路径计数的典型证明。

二项式定理

梦回选修 \(2\) 第二弹 QAQ。

\[(a + b) ^ n = \sum _{i = 0} ^ n \begin{pmatrix} n\\i\end{pmatrix} a^{n -i}b^{i} \]

整式乘法可证。

特殊情况:

\[\sum_{i = 0} ^ n \begin{pmatrix} n\\i\end{pmatrix} = 2 ^ n \]

\(a = b = 1\) 可得。

\[\sum_{i = 0} ^ n (-1)^n \begin{pmatrix} n\\i\end{pmatrix} = [n = 0] \]

\(a = 1,b = -1\) 时可得。

Lucas 定理

\[\begin{pmatrix} n\\m\end{pmatrix} \mod p = (\begin{pmatrix} n \mod p\\m \mod p\end{pmatrix}\begin{pmatrix} \lfloor \frac{n}{p} \rfloor \\\lfloor \frac{m}{p} \rfloor\end{pmatrix})\mod p \]

插板法

Q1:\(n\) 个相同元素分成非空的 \(m\) 组。

考虑将 \(m - 1\) 个板子插入 \(n - 1\) 个空中,所以答案为 \(\begin{pmatrix} n - 1\\m - 1\end{pmatrix}\)

Q2:\(n\) 个相同元素分成可空的 \(m\) 组。

考虑转化为 Q1,于是只要“借” \(m\) 个元素插进来即可,答案为 \(\begin{pmatrix} n + m - 1\\m - 1\end{pmatrix} = \begin{pmatrix} n + m - 1\\n\end{pmatrix}\)

实质上是求 \(\sum_{i = 1}^k x_i = n\) 的非负整数解的组数。

小球与盒子

路径计数

Q1:从 \((0,0)\) 走到 \((n,m)\) 的路径方案数:

比较 naive。

\[\begin{pmatrix} n + m\\m\end{pmatrix} \]

Q2:从 \((0,0)\) 走到 \((n,n)\) 除端点外不接触直线 \(y = x\) 的非降路径数:

先考虑 \(y = x\)下方的路径,都是从 \((0,0)\) 出发,经过 \((1, 0)\)\((n, n - 1)\)\((n,n)\),可以看做是 \((1,0)\)\((n, n- 1)\) 不接触 \(y = x\) 的非降路径数。

所有的的非降路径有 \(\begin{pmatrix} 2n - 1\\n - 1\end{pmatrix}\) 条。对于这里面任意一条接触了 \(y = x\) 的路径,可以把它最后离开这条线的点到 \((1, 0)\) 之间的部分关于 \(y = x\) 对称变换,就得到从 \((0, 1)\)\((n, n - 1)\) 的一条非降路径。反之也成立。从而 \(y = x\) 下方的非降路径数是 \(\begin{pmatrix} 2n - 1\\n - 1\end{pmatrix} - \begin{pmatrix} 2n - 1\\n - 1\end{pmatrix}\)。根据对称性可知所求答案为 \(2\begin{pmatrix} 2n - 1\\n - 1\end{pmatrix} - 2\begin{pmatrix} 2n - 1\\n - 1\end{pmatrix}\)

Q3:从 \((0,0)\) 走到 \((n, n)\) 除端点外不穿过直线 \(y = x\) 的非降路径数:
用类比 Q2 的方法可以得到:

\[\frac{2}{n + 1}\begin{pmatrix} 2n\\n\end{pmatrix} \]

例题

P3197 HNOI2008 越狱

简单高中数学。直接算不够方便,于是考虑容斥。总方案数为 \(n ^ m\),相邻宗教不同方案数为 \(m·(m - 1)^{n - 1}\)(第一个人能选 \(m\) 种宗教而其他人只能选剩下的不与前一个人重合的 \(m - 1\) 种),相减即可。

这个题目启发我们要学会用容斥等方法转换问题,从而使繁题简化。

P5520 yLOI2019 青原樱

因为 \(m\) 个樱花树幼苗之间必隔 \(m - 1\) 个空,我们考虑填上这些空,总空位变为 \(n - m + 1\)。接下来我们就是在 \(n - m + 1\) 个空中选 \(m\) 个空插,由于是有序的方案,所以答案为 \(A_{n - m + 1} ^ m\)

posted @ 2024-08-23 11:54  end_switch  阅读(16)  评论(0编辑  收藏  举报