news 2026/9/4 12:07:08

OI 计数技巧入门:排列组合 3 类高频题 + 一套组合数学公式速查表

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
OI 计数技巧入门:排列组合 3 类高频题 + 一套组合数学公式速查表

OI 计数技巧入门:排列组合 3 类高频题 + 一套组合数学公式速查表

【免费下载链接】OI-wiki:star2: Wiki of OI / ICPC for everyone. (某大型游戏线上攻略,内含炫酷算术魔法)项目地址: https://gitcode.com/GitHub_Trending/oi/OI-wiki

OI 计数里最劝退的,往往不是计算,而是一上来就不知道该用哪个工具:看到 $\dbinom{n}{k}$ 想半天、见到 $x_1+x_2+\cdots+x_k=n$ 就发懵。这 3 道题都是 OI 计数与组合数学入门题里的高频面孔,我们把背后的排列组合技巧一层层拆给你看。

第一关:数清一种"安排",先拆决策

:5 个同学站成一排合影,其中甲必须站在中间位置,共有多少种站法?

做法拆开看:中间的位置被甲占掉,只剩 4 个位置,让剩下 4 个人全排进去,得 $\mathrm A_4^4 = 4! = 24$ 种。这里用到的是乘法原理的变体——每个位置独立做决策,方案数就是各步方案数相乘。

顺带把最基础的两个数说清:从 $n$ 个不同对象里取 $m$ 个排好顺序,是排列数 $\mathrm A_n^m=\dfrac{n!}{(n-m)!}$;取 $m$ 个不管顺序,是组合数 $\dbinom{n}{m}=\dfrac{n!}{m!(n-m)!}$。

例题:6 个人围圆桌坐,旋转后重合的算同一种,多少种坐法?

  1. 圆桌上没有"第一个位置",先把 1 号固定住,破除旋转对称;
  2. 剩下 5 人在 5 个位置全排列;
  3. 答案 $(6-1)! = 120$。

⚠️ 这里有个坑:线性排队是 $n!$,圆排列是 $(n-1)!$,差的那一个因子就是"旋转对称"。别背公式,先问自己"谁被固定了"。


第二关:x₁+x₂+…+xₖ=n 的解,交给插板法

:把 10 颗相同糖分给 3 个小朋友,每人至少 1 颗,多少种分法?

方程形式就是 $x_1+x_2+x_3=10$,$x_i\ge 1$。

  1. 糖分成一排,10 颗糖之间有 $10-1$ 个空隙;
  2. 在空隙里插 2 块板,把糖切成 3 段;
  3. 从 9 个空隙选 2 个插板,答案 $\dbinom{9}{2}=36$。

换个角度想,插板法其实就是"在 $k-1$ 个隔板里选位置",所以正整数解的组数永远是 $\dbinom{n-1}{k-1}$。

插板法处理非负整数解的 3 种变形

变形一:允许分 0 颗($x_i\ge 0$)。

直接插板会失效——板子可以叠在同一个空隙里。套路是先"借":给每人先发 1 颗,总量变成 $n+k$,回到正整数情形,再退掉每人借的 1 颗。答案 $\dbinom{n+k-1}{k-1}$。

例题:$x_1+x_2+x_3=10$,$x_i\ge 0$,多少组非负解?

  1. 先发 3 颗,转成"13 颗、每人至少 1 颗";
  2. $\binom{13-1}{3-1}=\binom{12}{2}$;
  3. 答案 $66$。

变形二:各变量有下界($x_i\ge a_i$)。

先给第 $i$ 个人拨足 $a_i$ 颗,剩下 $n-\sum a_i$ 颗按无限制分,答案 $\binom{n+k-1}{k-1}$,其中 $n$ 换成 $n-\sum a_i$。

例题:$x_1+x_2=5$,且 $x_1\ge 2$。

  1. 先把 2 颗拨给 $x_1$,剩 3 颗自由分给两人;
  2. $\binom{3+2-1}{2-1}=\binom{4}{1}$;
  3. 答案 $4$,手查 $(2,3),(3,2),(4,1),(5,0)$ 正好对上。

变形三:带上界。

"每堆不超过 $c$"没法直接插板,通常绕道容斥:先算无限制的组数,再减去"某堆 $\ge c+1$"的方案——这个下一关登场。


第三关:带"不能""恰好"的条件,上容斥原理

:1 到 100 中,既不能被 2 整除、也不能被 3 和 5 整除的整数有多少个?

正着想要按 2、3、5 的倍数情况分类讨论,烦得很。反过来,用容斥原理数掉"坏"的。

设 $A,B,C$ 分别是被 2、3、5 整除的数的集合,$|A|=50,\ |B|=33,\ |C|=20$;两两交集 $|A\cap B|=\lfloor 100/6\rfloor=16$,$|A\cap C|=20$,$|B\cap C|=10$;三集合交集 $|A\cap B\cap C|=20$。

  1. 先加:$50+33+20$;
  2. 再减两两重叠:$-16-20-10$;
  3. 加回被减掉的三重重叠:$+20$,得 $|A\cup B\cup C|=74$。

答案 $100-74=26$。

💡 一句话直觉:加单个、减两两交、加三个交,交替进行,直到把每类重叠恰好抵消。数值上 $74=103-46+20$,与上式一致。

从"至少一个"到"恰好 k 个"

容斥还能处理"恰好"。经典结论:$n$ 元集合上恰好命中 $k$ 个指定性质的方案数,可以用"命中至多 $k$ 个"逐层容斥叠出来;而"至少命中 1 个"就是全集减去"一个都不命中"。

例题:4 人分 4 顶互不相同的帽子,恰好有 2 人拿到自己帽子的分法?

  1. 先选那 2 人:$\binom{4}{2}=6$;
  2. 剩下 2 人必须互相拿错,只有 1 种(对换);
  3. 答案 $6$。

组合数性质速查表

公式名字一句话直觉5 秒数值验证
$\dbinom{n}{m}=\dbinom{n}{n-m}$对称性选走 $m$ 个 = 留下 $n-m$ 个$\binom{5}{2}=\binom{5}{3}=10$
$\dbinom{n}{m}=\dbinom{n-1}{m}+\dbinom{n-1}{m-1}$杨辉三角递推第 $n$ 行由上一行两肩相加得到$6=3+3$
$(a+b)^n=\sum\limits_{i=0}^{n}\dbinom{n}{i}a^{n-i}b^i$二项式定理展开时"选 $i$ 项取 $b$"的方案数即系数$(1+x)^2=1+2x+x^2$
$\sum\limits_{i}\dbinom{r}{i}\dbinom{s}{k-i}=\dbinom{r+s}{k}$范德蒙恒等式从 $r+s$ 人里选 $k$ 人 = 按两边人数分组求和$\binom{2}{0}\binom{2}{2}+\binom{2}{1}\binom{2}{1}+\binom{2}{2}\binom{2}{0}=1+4+1=6=\binom{4}{2}$
$\sum\limits_{i=0}^{n}\dbinom{i}{k}=\dbinom{n+1}{k+1}$朱世杰恒等式杨辉三角中一条斜线之和仍是三角里的数$1+3+6=10=\binom{4}{3}$

公式的严格推导建议对照仓库文档 docs/math/combinatorics/combination.md 和 docs/math/combinatorics/vandermonde-convolution.md,那里给了组合意义解释;容斥部分可看 docs/math/combinatorics/inclusion-exclusion-principle.md。

下一步:3 件事验证你自己

  1. 回 OJ 上把这 3 道原型题亲手做一遍:线性+圆排列、"分球/求非负整数解"、"既不能……也不能……"的计数,各对应本文一、二、三关,能 10 分钟内写出答案就算过关。
  2. 自己推导一遍二项式定理与范德蒙恒等式(各用组合意义证,不超过半页纸),推不出来就回去读 docs/math/combinatorics/combination.md。
  3. 把上面那张速查表抄进自己的笔记,合上原文默写 5 个公式,卡壳的那条就是你下一周的复习重点。

【免费下载链接】OI-wiki:star2: Wiki of OI / ICPC for everyone. (某大型游戏线上攻略,内含炫酷算术魔法)项目地址: https://gitcode.com/GitHub_Trending/oi/OI-wiki

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/4 12:03:18

微信小程序毕业设计实战:从零构建以书会友社交平台

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华