<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>笔记（OI 与数学） on Meze's Blog</title><link>https://meze0.top/categories/%E7%AC%94%E8%AE%B0oi-%E4%B8%8E%E6%95%B0%E5%AD%A6/</link><description>Recent content in 笔记（OI 与数学） on Meze's Blog</description><generator>Hugo -- gohugo.io</generator><language>zh-cn</language><copyright>Meze</copyright><lastBuildDate>Fri, 13 Feb 2026 13:20:00 +0800</lastBuildDate><atom:link href="https://meze0.top/categories/%E7%AC%94%E8%AE%B0oi-%E4%B8%8E%E6%95%B0%E5%AD%A6/index.xml" rel="self" type="application/rss+xml"/><item><title>【组合数学】排列组合基础</title><link>https://meze0.top/p/%E7%BB%84%E5%90%88%E6%95%B0%E5%AD%A6%E6%8E%92%E5%88%97%E7%BB%84%E5%90%88%E5%9F%BA%E7%A1%80/</link><pubDate>Fri, 13 Feb 2026 13:20:00 +0800</pubDate><guid>https://meze0.top/p/%E7%BB%84%E5%90%88%E6%95%B0%E5%AD%A6%E6%8E%92%E5%88%97%E7%BB%84%E5%90%88%E5%9F%BA%E7%A1%80/</guid><description>&lt;img src="https://meze0.top/" alt="Featured image of post 【组合数学】排列组合基础" /&gt;&lt;h2 id="基础原理与排列组合"&gt;基础原理与排列组合
&lt;/h2&gt;&lt;h3 id="计数原理"&gt;计数原理
&lt;/h3&gt;&lt;p&gt;组合数学的核心在于计数，主要依赖两个基本原理：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;加法原理（分类计数）&lt;/strong&gt;：完成一件工程有 $n$ 类办法，第 $i$ 类办法有 $a_i$ 种不同方法（$i \in [1, n]$）。则完成该工程的总方法数为各类方法之和：
$$\sum_{i=1}^{n} a_i$$&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;乘法原理（分步计数）&lt;/strong&gt;：完成一件工程需要 $n$ 个步骤，第 $i$ 步有 $a_i$ 种不同方法（$i \in [1, n]$）。则完成该工程的总方法数为各步方法之积：
$$\prod_{i=1}^{n} a_i$$&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="排列数-a_nm"&gt;排列数 ($A_n^m$)
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;定义&lt;/strong&gt;：从 $n$ 个不同元素中，选择 $m$ 个元素组成排列的个数。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;推导&lt;/strong&gt;：基于乘法原理，第 1 个位置有 $n$ 种选择，第 2 个位置有 $n-1$ 种选择，以此类推，第 $m$ 个位置有 $n-m+1$ 种选择，故相乘得证。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;公式&lt;/strong&gt;：
&lt;/p&gt;
$$A_n^m = n \cdot (n-1) \cdot (n-2) \cdots (n-m+1) = \frac{n!}{(n-m)!}$$&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;全排列&lt;/strong&gt;：当 $m=n$ 时，$A_n^n = n!$，即 $n$ 个元素的全排列。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="组合数-c_nm-或-binomnm"&gt;组合数 ($C_n^m$ 或 $\binom{n}{m}$)
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;定义&lt;/strong&gt;：从 $n$ 个不同元素中，取出 $m$ 个元素组成集合（不考虑顺序）的个数。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;公式&lt;/strong&gt;：
&lt;/p&gt;
$$C_n^m = \binom{n}{m} = \frac{A_n^m}{A_m^m} = \frac{n!}{m!(n-m)!}$$&lt;h2 id="组合数的性质"&gt;组合数的性质
&lt;/h2&gt;&lt;p&gt;以下是组合数的一些重要性质及其解释：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;对称性&lt;/strong&gt;：
&lt;/p&gt;
$$\binom{n}{m} = \binom{n}{n-m}$$&lt;p&gt;
&lt;em&gt;解释：从 $n$ 个元素中选取 $m$ 个元素，相当于从 $n$ 个元素中“不选” $n-m$ 个元素。&lt;/em&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;帕斯卡公式（递推公式）&lt;/strong&gt;：
&lt;/p&gt;
$$\binom{n+1}{m} = \binom{n}{m} + \binom{n}{m-1}$$&lt;p&gt;
&lt;em&gt;解释：考虑第 $n+1$ 个元素，分为“不选该元素”（从剩下列 $n$ 个中选 $m$ 个）和“选该元素”（从剩下 $n$ 个中选 $m-1$ 个）两种情况。&lt;/em&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;边界条件&lt;/strong&gt;：
&lt;/p&gt;
$$\binom{n}{0} = 1, \quad \binom{n}{n} = 1$$&lt;p&gt;
&lt;em&gt;特别规定：当 $m &amp;gt; n$ 时，$\binom{n}{m} = 0$。&lt;/em&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="分组问题与插板法"&gt;分组问题与插板法
&lt;/h2&gt;&lt;p&gt;插板法是解决“相同元素分组”问题的核心方法。&lt;/p&gt;
&lt;h3 id="插板法正整数解"&gt;插板法（正整数解）
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;问题&lt;/strong&gt;：将 $n$ 个&lt;strong&gt;相同&lt;/strong&gt;元素分为 $m$ 组，每组&lt;strong&gt;至少&lt;/strong&gt;有 1 个元素，有多少种分法？
&lt;strong&gt;思路&lt;/strong&gt;：在 $n$ 个元素形成的 $n-1$ 个空隙中，插入 $m-1$ 个隔板。&lt;br&gt;
&lt;strong&gt;公式&lt;/strong&gt;：
&lt;/p&gt;
$$\binom{n-1}{m-1}$$&lt;blockquote&gt;
&lt;p&gt;此问题等价于求方程 $\sum_{i=1}^m x_i = n$ （$x_i \ge 1$）的整数解个数。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="插板法非负整数解"&gt;插板法（非负整数解）
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;问题&lt;/strong&gt;：将 $n$ 个&lt;strong&gt;相同&lt;/strong&gt;元素分为 $m$ 组，每组可以为空（即 $\ge 0$ 个元素），有多少种分法？ &lt;br&gt;
&lt;strong&gt;思路（借元法）&lt;/strong&gt;：先给每组额外“借” 1 个元素（共 $m$ 个），问题转化为将 $n+m$ 个元素分为 $m$ 组，每组至少 1 个。等分配完后再从每个组抽出一个元素就能符合原问题了。&lt;br&gt;
&lt;strong&gt;公式&lt;/strong&gt;：
&lt;/p&gt;
$$\binom{n+m-1}{m-1} = \binom{n+m-1}{n}$$&lt;blockquote&gt;
&lt;p&gt;此问题等价于求方程 $\sum_{i=1}^m x_i = n$ （$x_i \ge 0$）的整数解个数。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="插板法不定方程解的个数"&gt;插板法（不定方程解的个数）
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;问题&lt;/strong&gt;：将 $n$ 个&lt;strong&gt;相同&lt;/strong&gt;元素分为 $m$ 组，第 $i$ 组至少有 $a_i$ 个元素，$\sum a_i \le n$，有多少种分法？ &lt;br&gt;
&lt;strong&gt;思路&lt;/strong&gt;：从 $n$ 个元素中拿出 $\sum a_i$ 个元素，给每个组分 $a_i$ 个元素，接下来再从剩下 $n-\sum a_i$ 个元素分为 $m$ 组，每组可以为 $0$，等同于上一个问题。&lt;br&gt;
&lt;strong&gt;公式&lt;/strong&gt;：
&lt;/p&gt;
$$\binom{n-\sum a_i+m-1}{n-\sum a_i} = \binom{n-\sum a_i+m-1}{m-1}$$&lt;blockquote&gt;
&lt;p&gt;此问题等价于求方程 $\sum_{i=1}^m x_i = n$ （$x_i \ge a_i$）的整数解个数。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="不相邻组合"&gt;不相邻组合
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;问题&lt;/strong&gt;：从 $n$ 个&lt;strong&gt;相同&lt;/strong&gt;元素中选取 $m$ 个，要求这 $m$ 个元素互不相邻的组合数。 &lt;br&gt;
&lt;strong&gt;思路（插空法）（逆向思考）&lt;/strong&gt;：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;既然选出的 $m$ 个元素不能相邻，我们可以先处理&lt;strong&gt;不被选中&lt;/strong&gt;的 $n-m$ 个元素。&lt;/li&gt;
&lt;li&gt;将这 $n-m$ 个元素排成一列，它们之间以及两端会产生 $(n-m) + 1$ 个空位。&lt;/li&gt;
&lt;li&gt;要保证选出的元素不相邻，只需将这 $m$ 个选中的元素插入到上述不同的空位中即可。
&lt;strong&gt;公式&lt;/strong&gt;：
$$\binom{n-m+1}{m}$$&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="二项式定理"&gt;二项式定理
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;公式&lt;/strong&gt;：
&lt;/p&gt;
$$(a+b)^n = \sum_{i=0}^{n} \binom{n}{i} a^{n-i} b^i$$&lt;p&gt;&lt;strong&gt;证明思路（数学归纳法）&lt;/strong&gt;：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;验证 $n=1$ 时成立。&lt;/li&gt;
&lt;li&gt;假设 $n=k$ 时成立。&lt;/li&gt;
&lt;li&gt;当 $n=k+1$ 时，利用 $(a+b)^{k+1} = (a+b)(a+b)^k$，展开后利用 $\binom{k}{i} + \binom{k}{i-1} = \binom{k+1}{i}$ 即可得证。&lt;/li&gt;
&lt;/ol&gt;
&lt;blockquote&gt;
&lt;p&gt;如何直观理解（组合意义）？ &lt;br&gt;
我们以 $b$ 的幂为参考，当 $b$ 的幂为 $i$ 时相当于从 $n$ 个括号式子中选出了 $i$ 个 $b$ 进行相乘，这就有 $\binom{n}{i}$ 种情况，因此是 $\binom{n}{i} a^{n-i}b_i$&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;推广&lt;/strong&gt;：
&lt;/p&gt;
$$
(x_1 + \cdots + x_t)^n = \sum_{n_1 + \cdots + n_t = n} \frac{n!}{n_1! \cdots n_t!} x_1^{n_1} \cdots x_t^{n_t}
$$$$
= \sum_{n_1 + \cdots + n_t = n} \binom{n}{n_1,n_2,\cdots,n_t} x_1^{n_1} \cdots x_t^{n_t}
$$&lt;blockquote&gt;
&lt;p&gt;理解方式可以参考二项式定理&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="多重集-multiset"&gt;多重集 (Multiset)
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;定义&lt;/strong&gt;：多重集 $S = {n_1 \cdot a_1, n_2 \cdot a_2, \dots, n_k \cdot a_k}$，总元素个数 $n = \sum n_i$。&lt;/p&gt;
&lt;h3 id="多重集的排列数--多重组合数"&gt;多重集的排列数 | 多重组合数
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;公式&lt;/strong&gt;：
&lt;/p&gt;
$$
\binom{n}{n_1,n_2,\cdots,n_k}=\frac{n!}{n_1! n_2! \cdots n_k!}
$$&lt;p&gt;
&lt;strong&gt;解释&lt;/strong&gt;：多重集排列数即字面意思，每 $n_i$ 个 $a_i$ 就会产生 $n_i!$ 个排列，由此便推出公式。此式子同时也是多重组合数，即把 $n$ 个元素分成 $k$ 份， 第 $i$ 份有 $n_i$ 个元素，其实也可以用来解释普通的组合数，$\binom{n}{m}$ 其实就是把 $n$ 个元素分成 $2$ 份，一份包含 $m$ 个元素，一份包含 $n-m$ 个元素。
&lt;/p&gt;
$$
\binom{n}{m}=\binom{n}{n-m}=\binom{n}{n,n-m}
$$&lt;h3 id="多重集的组合数"&gt;多重集的组合数
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;情况 1：无限制&lt;/strong&gt;
从 $S$ 中取出 $r$ 个元素，且 $r$ 小于任意 $n_i$（即元素充足），等价于 $k$ 种元素选 $r$ 个的可重组合。问题可以转化为求解不定方程 $x_1+x_2+\cdots+x_k=r$ 的非负整数解的个数&lt;br&gt;
&lt;strong&gt;公式&lt;/strong&gt;：
&lt;/p&gt;
$$\binom{r+k-1}{k-1} = \binom{r+k-1}{r}$$&lt;p&gt;&lt;strong&gt;情况 2：有限制（容斥原理应用）&lt;/strong&gt;
&lt;strong&gt;问题&lt;/strong&gt;：求 $x_1 + x_2 + \cdots + x_k = r$ 的非负整数解个数，约束条件为 $0 \le x_i \le n_i$。
&lt;strong&gt;计算步骤&lt;/strong&gt;：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;全集 $U$&lt;/strong&gt;：不考虑 $x_i \le n_i$ 的限制，只考虑 $x_i \ge 0$。由扩展插板法，总数为 $\binom{r+k-1}{k-1}$。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;定义属性 $S_i$&lt;/strong&gt;：表示 $0 \le x_i \le n_i$ 的解。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;答案即为交集（我们使用 $\overline{S_i}$ 表示 $S_i$ 的补集）&lt;/strong&gt;：
$$
\left | \bigcap_{i=1}^{k} S_i \right |=|U|-\left | \bigcup_{i=1}^{k} \overline{S_i} \right |
$$&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;公式表示&lt;/strong&gt;：
&lt;/p&gt;
$$Ans = \sum_{T \subseteq \{1, \dots, k\}} (-1)^{|T|} \binom{r - \sum_{i \in T}(n_i+1) + k - 1}{k-1}$$&lt;p&gt;
&lt;em&gt;(注意：当组合数下标小于上标时，值为0)&lt;/em&gt;&lt;/p&gt;
&lt;h2 id="圆排列"&gt;圆排列
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;定义&lt;/strong&gt;：$n$ 个人排成一圈形成的排列数。
&lt;strong&gt;公式&lt;/strong&gt;：
&lt;/p&gt;
$$Q_n^n = \frac{A_n^n}{n} = (n-1)!$$&lt;h2 id="组合数的其他高级性质"&gt;组合数的其他高级性质
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;$\binom{n}{k} = \frac{n}{k} \binom{n-1}{k-1}$。&lt;/li&gt;
&lt;li&gt;$\sum_{i=0}^n \binom{n}{i} = 2^n$。&lt;/li&gt;
&lt;li&gt;$\sum_{i=0}^n (-1)^i \binom{n}{i} = 0$。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="鸽巢原理-pigeonhole-principle"&gt;鸽巢原理 (Pigeonhole Principle)
&lt;/h2&gt;&lt;p&gt;又称抽屉原理或狄利克雷原理。&lt;/p&gt;
&lt;h3 id="基本形式"&gt;基本形式
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;原理&lt;/strong&gt;：将 $n+1$ 个物品放入 $n$ 个抽屉中，那么至少有一个抽屉里含有 2 个或 2 个以上的物品。 &lt;br&gt;
&lt;strong&gt;证明&lt;/strong&gt;：使用&lt;strong&gt;反证法&lt;/strong&gt;。假设每个抽屉里的物品都少于 2 个（即至多 1 个），那么所有抽屉的物品总数 $\le n \times 1 = n$，这与总共有 $n+1$ 个物品矛盾。&lt;/p&gt;
&lt;h3 id="推广形式"&gt;推广形式
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;原理&lt;/strong&gt;：将 $n$ 个物品放入 $k$ 个抽屉中，那么至少有一个抽屉里含有 $\lceil \frac{n}{k} \rceil$ 个物品。 &lt;br&gt;
&lt;em&gt;注：$\lceil x \rceil$ 表示对 $x$ 向上取整。&lt;/em&gt;&lt;/p&gt;</description></item></channel></rss>