组合学核心知识点与解题技巧(初一级别 / CSP 备考适用)
一、基础原理:组合学的 “底层逻辑”
(一)加法原理:“选一类就能完成,把方法数加起来”
1. 核心定义
做一件事,有kkk类不同方法(每类方法单独用就能做完这件事,且各类方法不重复),第 1 类有n1n_1n1 种方法,第 2 类有n2n_2n2 种方法…… 第kkk类有nkn_knk 种方法,总方法数就是各类方法数的和。
2. 公式
总方法数 = n1+n2+⋯+nkn_1 + n_2 + \dots + n_kn1 +n2 +⋯+nk
3. 例子
从家到学校有 3 种方式:坐公交有 2 路、3 路(2 种选法),骑自行车有普通自行车、山地车(2 种选法),走路只有 1 种方式。总共有多少种去学校的方法?
解:三类方法互斥,直接相加 → 2+2+1=52 + 2 + 1 = 52+2+1=5种。
(二)乘法原理:“分多步才能完成,把每步方法数乘起来”
1. 核心定义
做一件事,需要分kkk步完成(少一步都做不完),第 1 步有n1n_1n1 种方法,第 2 步有n2n_2n2 种方法…… 第kkk步有nkn_knk 种方法,总方法数就是每步方法数的乘积。
2. 公式
总方法数 = n1×n2×⋯×nkn_1 \times n_2 \times \dots \times n_kn1 ×n2 ×⋯×nk
3. 例子
搭配一套衣服:上衣有 3 件(T 恤、衬衫、卫衣),裤子有 2 条(牛仔裤、运动裤)。总共能搭出多少套不同的衣服?
解:分两步(先选上衣、再选裤子),两步方法数相乘 → 3×2=63 \times 2 = 63×2=6套(如 T 恤 + 牛仔裤、T 恤 + 运动裤等)。
二、经典排列模型:“有序” 的计数方法
(一)圆排列:“围圆圈排队,固定一个人再算”
1. 核心定义nnn个不同的人(或物品)围在圆圈上排列,因为圆圈没有 “起点” 和 “终点”(比如 5 人围坐,顺时针换位置后相对顺序不变),所以先固定 1 个人的位置,再算剩下的人怎么排。
2. 公式nnn个不同元素的圆排列数 = (n−1)!(n-1)!(n−1)!
(“!” 是 “阶乘”,如3!=3×2×1=63! = 3 \times 2 \times 1 = 63!=3×2×1=6,4!=4×3×2×1=244! = 4 \times 3 \times 2 \times 1 = 244!=4×3×2×1=24,表示 “从这个数开始,乘比它小 1 的数,直到乘到 1”)
3. 例子
5 个同学围圆桌吃饭,有多少种不同的坐法?
解:固定 1 个同学的位置,剩下 4 个同学全排列 → 4!=4×3×2×1=244! = 4 \times 3 \times 2 \times 1 = 244!=4×3×2×1=24种。
(二)重复排列:“选了还能再选,每步都有NNN种选法”
1. 核心定义
从nnn个不同的物品里,选kkk个物品排列(选过的物品还能再选),因为每一步选的时候所有物品都在,所以每步都有nnn种选法。
2. 公式
总排列数 = nkn^knk
(nnn是物品总数,kkk是要选的个数,“nkn^knk” 表示nnn乘kkk次,如23=2×2×2=82^3 = 2 \times 2 \times 2 = 823=2×2×2=8)
3. 例子
用数字 0、1、2 组成 3 位数(数字可重复,如 111、202),总共能组成多少个?
解:分 3 步(百位、十位、个位):
* 百位不能是 0,有 2 种选法(1、2);
* 十位可以是 0、1、2,有 3 种选法;
* 个位和十位一样,3 种选法;
总个数 = 2×3×3=182 \times 3 \times 3 = 182×3×3=18种。
(三)不相邻排列:“先排不限制的,再插要间隔的”
1. 核心定义
要排两类物品,其中一类(如 A)不能相邻,就先把另一类(如 B)排好,再在 B 的 “空隙” 里插 A(空隙包括 B 的两端,确保 A 不相邻)。
2. 步骤公式(分两步)
① 先排无限制的mmm个物品 B:排列数 = m!m!m!(mmm个不同物品的全排列);
② 算 B 的空隙数:有m+1m+1m+1个空隙(如 3 个 B 排成 “B B B”,空隙是 “_ B _ B _ B _”,共 4 个);
③ 从m+1m+1m+1个空隙里选nnn个插 A,排列数 = Am+1nA_{m+1}^nAm+1n (Aab=a×(a−1)×⋯×(a−b+1)A_a^b = a \times (a-1)\times\dots\times(a-b+1)Aab =a×(a−1)×⋯×(a−b+1),表示从aaa个里选bbb个排队);
④ 总排列数 = m!×Am+1nm! \times A_{m+1}^nm!×Am+1n
3. 例子
有 3 个男生和 2 个女生排队,要求女生不能相邻,有多少种排法?
解:① 先排男生:3!=3×2×1=63! = 3 \times 2 \times 1 = 63!=3×2×1=6种;
② 男生的空隙数:3+1=43+1 = 43+1=4个(“_ 男 _ 男 _ 男 _”);
③ 从 4 个空隙选 2 个插女生:A42=4×3=12A_4^2 = 4 \times 3 = 12A42 =4×3=12种;
④ 总排法 = 6×12=726 \times 12 = 726×12=72种。
(四)错位排列:“每个人都不拿自己的东西”
1. 核心定义nnn个不同的物品(如nnn封信),分给nnn个对应对象(如nnn个邮箱),但每个物品都不能分给自己对应的对象,这种排列叫错位排列,用D(n)D(n)D(n)表示nnn个元素的错位排列数。
2. 公式(递推公式)
* 当n=1n=1n=1时:只有 1 个物品,无法错位,D(1)=0D(1) = 0D(1)=0;
* 当n=2n=2n=2时:2 个物品交换位置,只有 1 种错位,D(2)=1D(2) = 1D(2)=1;
* 当n>=3n>=3n>=3时:D(n)=(n−1)×[D(n−1)+D(n−2)]D(n) = (n-1) \times [D(n-1) + D(n-2)]D(n)=(n−1)×[D(n−1)+D(n−2)](第nnn个物品先和前面n−1n-1n−1个中的一个交换,再分两种情况算剩下的错位数)
1. 例子
3 个同学(甲、乙、丙)各有 1 支笔(甲的笔、乙的笔、丙的笔),把笔分给 3 人,每人都不能拿自己的笔,有多少种分法?
解:用递推公式算 → D(3)=(3−1)×[D(2)+D(1)]=2×(1+0)=2D(3) = (3-1) \times [D(2)+D(1)] = 2 \times (1+0) = 2D(3)=(3−1)×[D(2)+D(1)]=2×(1+0)=2种(实际为 “甲拿乙的、乙拿丙的、丙拿甲的” 和 “甲拿丙的、乙拿甲的、丙拿乙的”)。
三、其他高频题型:CSP 常考场景
(一)涂色问题:“抓自由变量,从约束多的位置入手”
1. 核心思路
涂色问题常涉及 “相邻区域不同色”“网格染色”,关键是确定 “自由选择的位置” 和 “被约束的位置”,优先从约束最多的位置(如角落、边缘)开始分析。
* 若有 “每行 / 每列” 全局约束(如 “网格染色,每两行交点同色数为偶数”),可尝试 “首行首列确定全局”:先自由选首行和首列的颜色,剩余位置颜色由首行首列唯一确定(需验证约束);
* 若仅 “相邻不同色”(如环形、线性涂色),线性从一端开始,环形先固定一个位置避免重复。
1. 例子
用红、绿两种颜色给 2×2 网格染色(无相邻约束),共多少种?
解:每个小格有 2 种选择,4 个小格分步计算 → 2×2×2×2=162 \times 2 \times 2 \times 2 = 162×2×2×2=16种。
(二)握手 / 比赛场次问题:“无序组合,选 2 个就对应一次”
1. 核心思路nnn个人互相握手、nnn队单循环赛,本质是 “从nnn个中选 2 个”(无序,交换两人 / 两队顺序不影响结果),直接用组合数公式。
2. 公式
总次数 = C(n,2)=n(n−1)2C(n,2) = \frac{n(n-1)}{2}C(n,2)=2n(n−1) (C(n,k)C(n,k)C(n,k)表示从nnn个里选kkk个的组合数,C(n,k)=n!k!(n−k)!C(n,k) = \frac{n!}{k!(n-k)!}C(n,k)=k!(n−k)!n! )
3. 例子
10 人互相握手,总次数 = C(10,2)=10×92=45C(10,2) = \frac{10 \times 9}{2} = 45C(10,2)=210×9 =45次;
8 队单循环赛,总场次 = C(8,2)=8×72=28C(8,2) = \frac{8 \times 7}{2} = 28C(8,2)=28×7 =28场。
(三)数字排列问题:“分类讨论,规避约束”
1. 核心思路
常涉及 “无重复数字”“首位≠0”“奇偶性” 等约束,需结合加法原理分类(如按个位奇偶性分),再用乘法原理分步计算。
2. 例子
用 0-5 组成无重复数字的三位偶数,共多少种?
解:按个位分 3 类(个位 = 0/2/4):
* 个位为 0:首位从 1-5 选(5 种),十位从剩下 4 数选(4 种)→ 5×4=205 \times 4 = 205×4=20种;
* 个位为 2:首位从 1,3,4,5 选(4 种),十位从剩下 4 数选(4 种)→ 4×4=164 \times 4 = 164×4=16种;
* 个位为 4:同个位为 2,16 种;
总结果 = 20+16+16=5220+16+16 = 5220+16+16=52种。
(四)分组分配问题:“平均分组要除序,分配任务不除序”
1. 核心思路
* 若组别无区分(平均分组,如 “6 人分成 3 组,每组 2 人”):需除以 “组数的阶乘”(消除重复分组顺序);
* 若组别有区分(分配任务,如 “6 人分给 3 个不同班级,每班 2 人”):无需除序,直接分步选。
1. 公式与例子
* 平均分组(6 人分 3 组,每组 2 人):
先分步选:C(6,2)×C(4,2)×C(2,2)=15×6×1=90C(6,2) \times C(4,2) \times C(2,2) = 15 \times 6 \times 1 = 90C(6,2)×C(4,2)×C(2,2)=15×6×1=90种;
除以组数阶乘(3 组):90A(3,3)=906=15\frac{90}{A(3,3)} = \frac{90}{6} = 15A(3,3)90 =690 =15种(A(3,3)=3!=6A(3,3)=3! = 6A(3,3)=3!=6)。
* 分配任务(6 人分给 3 个不同班级,每班 2 人):
直接分步选:C(6,2)×C(4,2)×C(2,2)=90C(6,2) \times C(4,2) \times C(2,2) = 90C(6,2)×C(4,2)×C(2,2)=90种。
(五)成对问题:“先定成对,再选不成对”
1. 核心思路
如 “手套选 k 只,恰好配 m 副”,先确定 m 副的选法,再从剩余种类中选 “不成对” 的,避免重复。
2. 例子
5 副不同颜色的手套(共 10 只),取 6 只恰好配 2 副,有多少种选法?
解:① 选 2 副手套:C(5,2)=10C(5,2) = 10C(5,2)=10种;
② 从剩下 3 副中选 2 只不成对的(每副选 1 只):C(3,2)×2×2=3×2×2=12C(3,2) \times 2 \times 2 = 3 \times 2 \times 2 = 12C(3,2)×2×2=3×2×2=12种(选 2 副,每副 2 种选择);
总结果 = 10×12=12010 \times 12 = 12010×12=120种。
(六)容斥原理:“算并集,减重复,加回多减的”
1. 定义:由若干个确定的、互不相同的元素组成的整体,用大写字母表示(如集合AAA、集合BBB),元素用小写字母表示(如a∈Aa \in Aa∈A表示 “aaa是AAA的元素”,a∉Aa \notin Aa∈/A表示 “aaa不是AAA的元素”)。
* 例:“小于 5 的正整数” 可表示为集合A={1,2,3,4}A = \{1,2,3,4\}A={1,2,3,4},其中元素1∈A1 \in A1∈A,5∉A5 \notin A5∈/A。
2. 关键属性:
* 确定性:元素是否属于集合必须明确(如 “好看的颜色” 不能构成集合,因为 “好看” 无标准;“红色、蓝色” 可构成集合)。
* 互异性:集合中元素不重复(如{1,1,2}\{1,1,2\}{1,1,2}不是有效集合,需写成{1,2}\{1,2\}{1,2})。
* 无序性:集合中元素顺序不影响(如{1,2}\{1,2\}{1,2}和{2,1}\{2,1\}{2,1}是同一个集合)。
3. 常用集合关系:
* 子集:若AAA的所有元素都在BBB中,称AAA是BBB的子集,记为A⊆BA \subseteq BA⊆B(如A={1,2}A=\{1,2\}A={1,2},B={1,2,3}B=\{1,2,3\}B={1,2,3},则A⊆BA \subseteq BA⊆B)。
* 交集:由同时属于AAA和BBB的元素组成的集合,记为A∩BA \cap BA∩B(如A={1,2,3}A=\{1,2,3\}A={1,2,3},B={3,4,5}B=\{3,4,5\}B={3,4,5},则A∩B={3}A \cap B = \{3\}A∩B={3})。
* 并集:由属于AAA或属于BBB的所有元素组成的集合,记为A∪BA \cup BA∪B(如A={1,2,3}A=\{1,2,3\}A={1,2,3},B={3,4,5}B=\{3,4,5\}B={3,4,5},则A∪B={1,2,3,4,5}A \cup B = \{1,2,3,4,5\}A∪B={1,2,3,4,5})。
* 补集:在 “全体元素集合(全集UUU)” 中,不属于AAA的元素组成的集合,记为∁UA\complement_U A∁U A(如全集U={1,2,3,4,5}U=\{1,2,3,4,5\}U={1,2,3,4,5},A={1,2}A=\{1,2\}A={1,2},则∁UA={3,4,5}\complement_U A = \{3,4,5\}∁U A={3,4,5})。
当需要计算 “多个集合的并集元素个数” 时,直接相加会重复计算 “交集部分”,容斥原理通过 “加并集、减交集、加三交集” 的方式,精准消除重复,是解决 “至少满足一个条件” 问题的核心工具。
1. 两个集合的容斥原理(基础版)
* 公式:对于任意两个集合AAA和BBB,并集的元素个数 = 两个集合元素个数之和 - 交集的元素个数,即:
∣A∪B∣=∣A∣+∣B∣−∣A∩B∣|A \cup B| = |A| + |B| - |A \cap B|∣A∪B∣=∣A∣+∣B∣−∣A∩B∣
* 含义:先算AAA和BBB的总元素(∣A∣+∣B∣|A|+|B|∣A∣+∣B∣),但AAA和BBB重叠的部分(A∩BA \cap BA∩B)被算了两次,所以减去 1 次。
* 例子:
某班有 20 人喜欢数学,15 人喜欢英语,其中 8 人既喜欢数学又喜欢英语,求喜欢数学或英语的总人数。
解:设AAA=“喜欢数学的人”,BBB=“喜欢英语的人”,则∣A∣=20|A|=20∣A∣=20,∣B∣=15|B|=15∣B∣=15,∣A∩B∣=8|A \cap B|=8∣A∩B∣=8。
喜欢数学或英语的人数 = ∣A∪B∣=20+15−8=27|A \cup B| = 20 + 15 - 8 = 27∣A∪B∣=20+15−8=27人。
2. 三个集合的容斥原理(进阶版)
* 公式:对于任意三个集合AAA、BBB、CCC,并集的元素个数 = 三个集合元素个数之和 - 每两个集合的交集之和 + 三个集合的交集,即:
∣A∪B∪C∣=∣A∣+∣B∣+∣C∣−∣A∩B∣−∣A∩C∣−∣B∩C∣+∣A∩B∩C∣|A \cup B \cup C| = |A| + |B| + |C| - |A \cap B| - |A \cap C| - |B \cap C| + |A \cap B \cap C|∣A∪B∪C∣=∣A∣+∣B∣+∣C∣−∣A∩B∣−∣A∩C∣−∣B∩C∣+∣A∩B∩C∣
* 含义:先加三个集合总元素,再减去每两个的交集(消除两次重复),但此时三个集合的交集被多减了 1 次,所以加回 1 次。
* 例子:
某校参加数学、物理、化学竞赛的人数分别为 12、10、8,其中同时参加数学和物理的有 5 人,同时参加数学和化学的有 3 人,同时参加物理和化学的有 2 人,三个竞赛都参加的有 1 人,求至少参加一个竞赛的人数。
解:设AAA=“数学竞赛”,BBB=“物理竞赛”,CCC=“化学竞赛”,则:
∣A∪B∪C∣=12+10+8−5−3−2+1=21|A \cup B \cup C| = 12 + 10 + 8 - 5 - 3 - 2 + 1 = 21∣A∪B∪C∣=12+10+8−5−3−2+1=21人。
(七)鸽巢原理(抽屉原理):“东西多,盒子少,必有一个盒子装得多”
鸽巢原理是解决 “必然存在某种情况” 的计数工具,核心是利用 “元素数量” 与 “容器数量” 的差距,推导确定性结论,常考 “至少有kkk个元素在同一容器” 的问题。
1. 基础鸽巢原理(简单版)
* 核心结论:若有nnn个 “鸽巢”(容器),mmm个 “鸽子”(元素),且m>nm > nm>n,则至少有一个鸽巢里有 2 只或更多鸽子。
* 公式化表达:若m>nm > nm>n,则存在至少一个鸽巢,其鸽子数≥2\geq 2≥2。
* 例子:
13 个人中,为什么至少有 2 人生日在同一个月?
解:“月份” 是鸽巢(共 12 个),“人” 是鸽子(共 13 个),13 > 12,因此至少有 2 人在同一月生日。
2. 进阶鸽巢原理(通用版)
* 核心结论:若有nnn个鸽巢,mmm个鸽子,则至少有一个鸽巢里的鸽子数(⌈x⌉\lceil x \rceil⌈x⌉表示 “向上取整”,即不小于xxx的最小整数,如⌈2.1⌉=3\lceil 2.1 \rceil=3⌈2.1⌉=3,⌈3⌉=3\lceil 3 \rceil=3⌈3⌉=3)。
* 用途:计算 “至少有多少个元素在同一容器”,避免 “极端分配” 的误区(如 “尽量平均分配后,总有一个容器多 1 个”)。
* 例子:
25 个苹果分给 4 个小朋友,至少有一个小朋友能分到多少个苹果?
解:⌈254⌉=⌈6.25⌉=7\lceil \frac{25}{4} \rceil = \lceil 6.25 \rceil = 7⌈425 ⌉=⌈6.25⌉=7,因此至少有一个小朋友分到 7 个苹果(验证:若每人分 6 个,共分4×6=244 \times 6 = 244×6=24个,剩 1 个,必须分给某一人,使其分到 7 个)。
四、解题技巧:“四步走” 规避陷阱
1. 明确目标
确定题目要计算 “排列 / 组合 / 分组 / 染色”,列出所有约束(如首位≠0、相邻不同色、至少 1 个等)。
2. 选择方法
* 遇 “或” 用加法(分类),遇 “且” 用乘法(分步);
* 有序用排列(A (n,k)),无序用组合(C (n,k));
* 相邻用捆绑法,不相邻用插空法;
* 正面复杂用反向(总情况 - 不符合情况)。
1. 计算验证
注意 “平均分组除序”“捆绑内部排列” 等细节,避免重复或遗漏。
2. 小值测试
用小数据验证逻辑(如分组问题用 n=4 分 2 组,公式算是否为 3 种,手动枚举确认)。
> (注:文档1920\frac{19}{20}2019 的内容由 AI 生成)
> (注:不为干啥,不为加精)
> 给个赞吧QwQ