前言
组合数,一个令人头大的东西
参考资料
组合数:https://www.luogu.com.cn/blog/chengni5673/dang-xiao-qiu-yu-shang-he-zi
定义
n
!
=
1
∗
2
∗
3
∗
.
.
.
∗
n
n!=1*2*3*...*n
n!=1∗2∗3∗...∗n
[
p
]
[p]
[p]仅当条件
p
p
p成立时此式子的值为
1
1
1,否则为
0
0
0。
有标号的东西:简单来说就是东西之间存在不同,比如
1
,
2
1,2
1,2和
2
,
1
2,1
2,1是两个不同的排列,而
a
a
aa
aa和
a
a
aa
aa则是两个相同的排列。
A
ˉ
\bar{A}
Aˉ表示
A
A
A的补集。
S
S
S表示全集。
组合数初解
代数意义
什么是组合数?
比如说有 n n n个不同的人,问你他们不同的排列数,你一下子就说 n ! n! n!啊。
毕竟第一个位置有 n n n个选择,第二个位置有 n − 1 n-1 n−1个选择,第三个 n − 2 n-2 n−2个选择以此类推。
那么如果从中抽 m m m个人并进行排列呢?
第一个位置 n n n种选择,到第 m m m个位置停止,那不就是 n ! ( n − m ) ! \frac{n!}{(n-m)!} (n−m)!n!吗
但是,如果只是问你从 n n n个人中随便选 m m m个人的方案是多少,你就一下子懵了。
但是你想想看,同 m m m个人,他们能组成的排列数是 m ! m! m!种,那么我们用 n ! ( n − m ) ! \frac{n!}{(n-m)!} (n−m)!n!除 m ! m! m!不就可以得到结果了吗?
也就是 n ! ( n − m ) ! m ! \frac{n!}{(n-m)!m!} (n−m)!m!n!。
具体的,从 n n n个人中选 m m m个的方案数的数学符号为 C n m C_{n}^m Cnm,或者为 ( n m ) \binom{n}{m} (mn),从 n n n个人中选 m m m个人出来排列为 A n m A_{n}^m Anm。
C n m = n ! ( n − m ) ! m ! , A n m = n ! ( n − m ) ! C_{n}^m=\frac{n!}{(n-m)!m!},A_{n}^m=\frac{n!}{(n-m)!} Cnm=(n−m)!m!n!,Anm=(n−m)!n!
图形意义
你知道杨辉三角形吗?
是的,就是下面这坨东西:
每个数字都等于上面两个数字的和,图中给出了两个例子:
2
=
1
+
1
,
6
=
3
+
3
2=1+1,6=3+3
2=1+1,6=3+3,特别的,每行的最左边和最右边都是
1
1
1,实际上,第
i
i
i行第
j
j
j个数字就是
C
i
−
1
j
−
1
C_{i-1}^{j-1}
Ci−1j−1。
具体的证明可以看简单恒等式中的第3条
二项式意义
如果要说组合数最NB的意义,就是这个意义了。
( a + 1 ) k = ∑ i = 0 k C k i a i ( k ∈ N + ) (a+1)^k=\sum\limits_{i=0}^kC_{k}^ia^i(k∈N_{+}) (a+1)k=i=0∑kCkiai(k∈N+)
所以 C k i C_{k}^i Cki就是 a i a_{i} ai的系数。
简单恒等式
是的,这里的恒等式非常的简单。
注:一下证明都是在假定左边的式子有意义的情况下予以证明,如果 C n i ( i > n 或 者 i < 0 ) C_{n}^i(i>n或者i<0) Cni(i>n或者i<0),那么值为 0 0 0,补证则是考虑上式子中组合数越界的情况(不考虑 n < 0 n<0 n<0 的情况)。
-
C
n
i
=
C
n
n
−
i
C_{n}^i=C_{n}^{n-i}
Cni=Cnn−i
证明: C n i = n ! ( n − i ) ! i ! = n ! i ! ( n − i ) ! = C n n − i C_{n}^i=\frac{n!}{(n-i)!i!}=\frac{n!}{i!(n-i)!}=C_{n}^{n-i} Cni=(n−i)!i!n!=i!(n−i)!n!=Cnn−i
补证:越界显然是两边同时越界的。 -
C
n
i
=
n
i
C
n
−
1
i
−
1
C_{n}^i=\frac{n}{i}C_{n-1}^{i-1}
Cni=inCn−1i−1
证明: C n i = n ! i ! ( n − i ) ! = n i ( n − 1 ) ! ( i − 1 ) ! ( n − i ) ! = n i C n − 1 i − 1 C_{n}^i=\frac{n!}{i!(n-i)!}=\frac{n}{i}\frac{(n-1)!}{(i-1)!(n-i)!}=\frac{n}{i}C_{n-1}^{i-1} Cni=i!(n−i)!n!=in(i−1)!(n−i)!(n−1)!=inCn−1i−1
补证:越界显然是两边都是 0 0 0 。 -
C
n
i
=
C
n
−
1
i
−
1
+
C
n
−
1
i
(
n
>
0
)
C_{n}^i=C_{n-1}^{i-1}+C_{n-1}^i(n>0)
Cni=Cn−1i−1+Cn−1i(n>0)
如果 n = i n=i n=i或者 i = 0 i=0 i=0,显然成立,然后开始代数证明(从右边的式子推到左边):
( n − 1 ) ! ( i − 1 ) ! ( n − i ) ! + ( n − 1 ) ! i ! ( n − i − 1 ) ! = i n n ! i ! ( n − i ) ! + n n − i n ! i ! ( n − i ) ! = C n i \frac{(n-1)!}{(i-1)!(n-i)!}+\frac{(n-1)!}{i!(n-i-1)!}=\frac{i}{n}\frac{n!}{i!(n-i)!}+\frac{n}{n-i}\frac{n!}{i!(n-i)!}=C_{n}^i (i−1)!(n−i)!(n−1)!+i!(n−i−1)!(n−1)!=nii!(n−i)!n!+n−ini!(n−i)!n!=Cni。
当然,这也就证明了上面杨辉三角形代表的组合意义。
补证:分 i < 0 , i = n , i > n i<0,i=n,i>n i<0,i=n,i>n 三种情况讨论即可。 -
∑
i
=
0
n
(
−
1
)
i
C
n
i
=
[
n
=
0
]
\sum\limits_{i=0}^n(-1)^iC_{n}^i=[n=0]
i=0∑n(−1)iCni=[n=0]
这个用杨辉三角形非常的好证明,对于第 n ( n > 0 ) n(n>0) n(n>0)行,奇数位置为蓝色,偶数位置为红色,然后全部向上一行指过去,上一行每个数字都被一个红色和一个蓝色指到,刚好相消,只有当 n = 0 n=0 n=0时,该式子的值为 1 1 1。
-
∑
i
=
0
n
C
n
i
=
2
n
\sum\limits_{i=0}^nC_{n}^i=2^n
i=0∑nCni=2n
从组合意义去证明,对于 n n n个硬币, 2 n 2^n 2n就表示不同的硬币朝上的情况,如果设 k k k个硬币朝上的方案其实就是 C n k C_{n}^k Cnk。
第二就是从二项式角度出发: ( 1 + 1 ) n = ∑ i = 0 n C n i (1+1)^n=\sum\limits_{i=0}^nC_{n}^i (1+1)n=i=0∑nCni,是不是非常显然了。 -
C
n
i
C
i
m
=
C
n
m
C
n
−
m
n
−
i
(
0
≤
m
≤
n
,
i
≤
n
)
C_{n}^iC_{i}^m=C_{n}^mC_{n-m}^{n-i}(0≤m≤n,i≤n)
CniCim=CnmCn−mn−i(0≤m≤n,i≤n)
证明: n ! i ! ( n − i ) ! ∗ i ! m ! ( i − m ) ! = n ! ( n − m ) ! ( n − i ) ! ∗ ( n − m ) ! m ! ( i − m ) ! = n ! ( n − m ) ! m ! ∗ ( n − m ) ! ( n − i ) ! ( i − m ) ! = C n m ∗ C n − m n − i \frac{n!}{i!(n-i)!}*\frac{i!}{m!(i-m)!}=\frac{n!}{(n-m)!(n-i)!}*\frac{(n-m)!}{m!(i-m)!}=\frac{n!}{(n-m)!m!}*\frac{(n-m)!}{(n-i)!(i-m)!}=C_{n}^m*C_{n-m}^{n-i} i!(n−i)!n!∗m!(i−m)!i!=(n−m)!(n−i)!n!∗m!(i−m)!(n−m)!=(n−m)!m!n!∗(n−i)!(i−m)!(n−m)!=Cnm∗Cn−mn−i
补证:当 i < m i<m i<m 时,左右两边都是 0 0 0 。 -
∑
i
=
a
b
C
i
a
=
C
b
+
1
a
+
1
(
0
≤
a
≤
b
)
\sum\limits_{i=a}^{b}C_{i}^{a}=C_{b+1}^{a+1}(0≤a≤b)
i=a∑bCia=Cb+1a+1(0≤a≤b)
这个证明自然也是十分的简单的,对于 C a a = C a + 1 a + 1 = 1 C_a^a=C_{a+1}^{a+1}=1 Caa=Ca+1a+1=1 ,而对于 i i i , C x a + C x a + 1 = C x + 1 a + 1 C_{x}^a+C_{x}^{a+1}=C_{x+1}^{a+1} Cxa+Cxa+1=Cx+1a+1,就这样不断的转换下去,最终转化成 C x + 1 a + 1 C_{x+1}^{a+1} Cx+1a+1。
画一个左对齐的杨辉三角形:
分析组合数
参考:https://www.luogu.com.cn/blog/chengni5673/dang-xiao-qiu-yu-shang-he-zi
这里主要就是如何分析出这个用什么组合数,当然,这也是组合数中最难的部分,这里只讲一个初等的方法,至于超级大佬的方法,需要自己去积累了。
容斥原理
∣ A ∣ |A| ∣A∣表示这个集合中的元素个数。
两个集合的容斥: ∣ A ∪ B ∣ = ∣ A ∣ + ∣ B ∣ − ∣ A ∩ B ∣ |A∪B|=|A|+|B|-|A∩B| ∣A∪B∣=∣A∣+∣B∣−∣A∩B∣
对于多个集合的容斥:
A 1 , A 2 , A 3 , A 4 , . . . A_1,A_2,A_3,A_4,... A1,A2,A3,A4,...
设 S k S_{k} Sk为 k k k个 A A A集合的交集
∣ A 1 ∪ A 2 ∪ A 3 ∪ A 4 . . . . . ∪ A n ∣ = ∑ j = 1 n ( − 1 ) j − 1 ∑ 1 ≤ i 1 < i 2 < . . . < i j ≤ n ∣ A i 1 ∩ A i 2 ∣ |A_1∪A_2∪A_3∪A_4.....∪A_n|=\sum\limits_{j=1}^n(-1)^{j-1}\sum\limits_{1≤i_1<i_2<...<i_j≤n}|A_{i_1}∩A_{i_2}| ∣A1∪A2∪A3∪A4.....∪An∣=j=1∑n(−1)j−11≤i1<i2<...<ij≤n∑∣Ai1∩Ai2∣
证明的话也是灰常的简单:
一个元素被
k
k
k个集合包含,那么其会被统计多少次呢?
就是:
C
k
1
−
C
k
2
+
.
.
.
.
.
+
(
−
1
)
k
−
1
C
k
k
=
0
+
C
k
0
=
1
C_{k}^1-C_{k}^2+.....+(-1)^{k-1}C_{k}^k=0+C_{k}^0=1
Ck1−Ck2+.....+(−1)k−1Ckk=0+Ck0=1
当然,容斥原理也有其余形式:
∣ A 1 ˉ ∩ A 2 ˉ ∩ A 3 ˉ . . . ∩ A n ˉ ∣ = ∣ S ∣ − ∣ A 1 ∪ A 2 ∪ A 3 . . . ∪ A n ∣ |\bar{A_1}∩\bar{A_2}∩\bar{A_3}...∩\bar{A_n}|=|S|-|A_1∪A_2∪A_3...∪A_n| ∣A1ˉ∩A2ˉ∩A3ˉ...∩Anˉ∣=∣S∣−∣A1∪A2∪A3...∪An∣
证明:
A 1 ∪ A 2 ∪ A 2 ∪ . . . ∪ A n ‾ = A 1 ‾ ∩ A 2 ‾ ∩ A 3 ‾ . . . ∩ A n ‾ \overline{A_{1}∪A_{2}∪A_{2}∪...∪A_n}=\overline{A_1}∩\overline{A_2}∩\overline{A_3}...∩\overline{A_n} A1∪A2∪A2∪...∪An=A1∩A2∩A3...∩An
换一下,证毕。
当然,还有一个奇怪的式子:
A 1 ∩ A 2 ∩ A 2 ∩ . . . ∩ A n ‾ = A 1 ‾ ∪ A 2 ‾ ∪ A 3 ‾ . . . ∪ A n ‾ \overline{A_{1}∩A_{2}∩A_{2}∩...∩A_n}=\overline{A_1}∪\overline{A_2}∪\overline{A_3}...∪\overline{A_n} A1∩A2∩A2∩...∩An=A1∪A2∪A3...∪An
证明:
你只需要把 A A A全部取补代入 A 1 ∪ A 2 ∪ A 2 ∪ . . . ∪ A n ‾ = A 1 ‾ ∩ A 2 ‾ ∩ A 3 ‾ . . . ∩ A n ‾ \overline{A_{1}∪A_{2}∪A_{2}∪...∪A_n}=\overline{A_1}∩\overline{A_2}∩\overline{A_3}...∩\overline{A_n} A1∪A2∪A2∪...∪An=A1∩A2∩A3...∩An,然后左右取补集即可。
插板法
插板法,顾名思义:插板
举个例子:
假设现在有 n n n个小球,没有编号,但是又有 m m m个有标号的框,问有多少种放球方法,不允许一个框没有球。
那么我们可以把小球排成一排,然后在球与球的空隙之间插板,第一个板左边是第一个框,第一个板到第二板就是第二个框,以此类推,只需要插 m − 1 m-1 m−1个板即可。
也就是: C n − 1 m − 1 C_{n-1}^{m-1} Cn−1m−1
那这个方法有什么用呢?在分析组合数时会比较直观,比较方便,当然也要运用合理,否则就会闹不小的笑话。
一个小套路
那如果是允许框是空的呢?
非常simple的方法就是给每个框都放上一个球,这样就跟上面的题一摸一样啦。
捆绑法
其实就是把物体当成一个整体,用参考资料中的一个例子:
例子:有 8本不同的书;其中数学书 3本,外语书 2本,其它学科书 3本.若将这些书排成一列放在书架上,求数学书和外语书都放在一起的方案数
把 3本数学书“捆绑”在一起看成一个整体, 2本外语书也“捆绑”在一起看成一个整体,与其它 3本书一起看作 5个元素,然后就可以求了。
当然,我补充一点。
有时候捆绑法比较好用的一点就是你可以把每一部分看成一个整体,然后在处理整体内的情况,一般情况下就是:整体外 × × ×整体内。
随机应变
有时候遇到上面不能解决的问题时,多从组合数本身的定义出发,不断的找题目中的信息并写出公式,至于这个随机应变要怎么掌握,就基本上是多刷题,提升实力了。
坑
增加较难的组合数以及一些例子。