加法原理
完成一件工作有 n n n类方法,第 i i i种方法有 m i m_i mi种不同的方法,完成这件工作共有 n = ∑ i = 1 n m i n= \sum_{i=1}^nm_i n=∑i=1nmi种方法。
乘法原理
完成一件工作共需 n n n个步骤,第 i i i个步骤有 m i m_i mi种方法,完成这件工作共需 ∏ i = 1 n m i \prod_{i=1}^nm_i ∏i=1nmi种方法。
抽屉原理
原理一
把 m ( m ≥ n + 1 ) m(m \geq n+1) m(m≥n+1)件物品放入 n n n个抽屉里,则至少有一个抽屉里有两种物品。
原理二
把 x ( x ≥ n ∗ m + 1 ) x(x \geq n*m+1) x(x≥n∗m+1)件物品放入 n n n个抽屉,至少有一个抽屉里有不少于两件物品。
原理三
把无穷物品放入 n n n个抽屉至少有一个抽屉里有无穷个物品。
例一
问题: 如何证明:从 1 1 1到 20 20 20这 20 20 20个数任取 11 11 11个数,必有两个数,其中一个数是另外一个数法倍数。
证明: 11 11 11个数是物品,抽屉应该按照“同一抽屉中任意两个数都具有倍数关系”的原则,那么最多可以分为十个抽屉: { 1 , 2 , 4 , 8 , 16 } , { 3 , 6 , 12 } , { 5 , 10 , 20 } , { 7 , 14 } , { 9 , 18 } , { 11 } , { 13 } , { 15 } , { 17 } , { 19 } \{1,2,4,8,16\},\{3,6,12\},\{5,10,20\},\{7,14\},\{9,18\},\{11\},\{13\},\{15\},\{17\},\{19\} {1,2,4,8,16},{3,6,12},{5,10,20},{7,14},{9,18},{11},{13},{15},{17},{19}。显然任取 11 11 11个数,一定满足必有两数是倍数关系。
扩展: 给出正整数 n n n,求出 1 − n 1-n 1−n中至少选择多少个数使得必存在两个数是倍数关系?按照上面的构造方式,答案是 ( n < < 1 ) + ( n & 1 ) + 1 (n<<1)+(n\&1)+1 (n<<1)+(n&1)+1。
例二
问题: 有一个 3 3 3行十列的表格,每个小方格可以涂上两种颜色,试证明无论怎样涂,至少两列法涂色方法相同。
证明: 每列有三格,显然有 2 3 = 8 2^3=8 23=8种涂法,这 8 8 8种涂法就相当于是抽屉, 10 10 10列相当于物品,由抽屉原理可知显然成立。
例三
问题: 对任意的五个数,证明其中必有三个数的和能被 3 3 3整除。
证明: 3 3 3的剩余系为 { 0 , 1 , 2 } \{0,1,2\} {0,1,2}为抽屉,五个数为物品,五个数分别对三取模,然后分类讨论:
- 若五个余数分布在其中的三个抽屉中,只需各取一个。
- 若五个余数分布在其中的两个抽屉中,其中必有一个抽屉至少包含三个数,那么这三个数的和也一定是三的倍数。
- 若五个余数分布在其中的 1 1 1个抽屉中,由上面知显然成立。
容斥定理
常见的问题,给出班上的总人数,有若干项活动。参与某项活动的参与人数 x i x_i xi,给出同时参与两项活动的人数 y i y_i yi,求三项都参与的人数 z z z,那么有 ∑ i = 1 n x i − ∑ i = 1 n y i + z = t o t \sum_{i=1}^nx_i - \sum_{i=1}^ny_i +z = tot ∑i=1nxi−∑i=1nyi+z=tot。显然对于左边来看就是奇数次加上,偶数次减去。
例子
问题: 给出 n n n,求出 [ 1 , n ] [1,n] [1,n]中不是 2 , 3 , 5 2,3,5 2,3,5的倍数的个数。
证明: ⌊ n 2 ⌋ \lfloor \frac{n}{2} \rfloor ⌊2n⌋求出的是 n n n以内 2 2 2的倍数,同理 3 , 5 3,5 3,5,然后我们对三个集合求交集,减去两个数重复的部分,再加上三个数重复的部分。根据容斥定理,答案为: n − [ ( ⌊ n 2 ⌋ ) + ⌊ n 3 ⌋ + ⌊ n 5 ⌋ ) − ( ⌊ n 6 ⌋ + ⌊ n 10 ⌋ + ⌊ n 15 ⌋ ) + ⌊ n 30 ⌋ ] n-[(\lfloor \frac{n}{2} \rfloor) + \lfloor \frac{n}{3} \rfloor + \lfloor \frac{n}{5} \rfloor)- (\lfloor \frac{n}{6} \rfloor+\lfloor \frac{n}{10} \rfloor+\lfloor \frac{n}{15} \rfloor)+\lfloor \frac{n}{30} \rfloor] n−[(⌊2n⌋)+⌊3n⌋+⌊5n⌋)−(⌊6n⌋+⌊10n⌋+⌊15n⌋)+⌊30n⌋]
多重集的排列组合
设 S = { n 1 ∗ a 1 , n 2 ∗ a 2 , n 3 ∗ a 3 , . . . , n k ∗ a k } S = \{n_1*a_1 , n_2 * a_2 , n_3 * a_3,...,n_k*a_k\} S={n1∗a1,n2∗a2,n3∗a3,...,nk∗ak}是由 n 1 n_1 n1个 a 1 a_1 a1、 n 2 n_2 n2个 a 2 a_2 a2、…、 n k n_k nk个 a k a_k ak组成的集合。
多重集的排列数
设 n = n 1 + n 2 + n 3 + . . . + n k n = n_1 + n_2 + n_3 + ... + n_k n=n1+n2+n3+...+nk,那么全排列的个数为 n ! n 1 ! n 2 ! ⋅ ⋅ ⋅ n k ! \frac{n!}{n_1!n_2!···n_k!} n1!n2!⋅⋅⋅nk!n!
多重集的组合数
定理一: 从多重集 S S S中取出 r ( r ≤ n i , ∀ i ∈ [ 1 , k ] ) r(r \leq n_i, \forall i \in [1,k]) r(r≤ni,∀i∈[1,k])个数构成一个多重集的方案个数为 C k + r − 1 k − 1 = C k + r − 1 r C_{k+r-1}^{k - 1} = C_{k+r-1}^r Ck+r−1k−1=Ck+r−1r
证明: 因为 r ≤ n i r \leq n_i r≤ni,所以对于该问题可以等价于有 r r r个小球以及 k − 1 k-1 k−1个隔板,这 r + k − 1 r+k-1 r+k−1个物品排列后隔板将小球分成 [ 1 , k ] [1,k] [1,k]份,这个方案数实际上就是我们要求的组合数,即 ( k + r − 1 ) ! r ! ( k − 1 ) ! = C k + r − 1 r = C k + r − 1 k − 1 \frac{(k+r-1)!}{r!(k-1)!} = C_{k+r-1}^r = C_{k+r-1}^{k-1} r!(k−1)!(k+r−1)!=Ck+r−1r=Ck+r−1k−1
定理二: 从多重集 S S S中取出 r ( r ≤ n ) r(r \leq n) r(r≤n)个数构成一个多重集的方案个数为 C k + r − 1 k − 1 − ∑ i = 1 k C k + r − n i − 2 k − 1 + ∑ 1 ≤ i < j ≤ k C k + r − n i − n j − 3 k − 1 − ⋅ ⋅ ⋅ + ( − 1 ) k C k + r − ∑ i = 1 k n i − ( k + 1 ) k − 1 C_{k+r-1}^{k - 1} - \sum_{i = 1}^kC_{k+r - n_i - 2}^{k-1} + \sum_{1 \leq i < j \leq k}C_{k+r-n_i-n_j-3}^{k-1} - ···+(-1)^k C_{k+r - \sum_{i=1}^kn_i - (k+1)}^{k-1} Ck+r−1k−1−∑i=1kCk+r−ni−2k−1+∑1≤i<j≤kCk+r−ni−nj−3k−1−⋅⋅⋅+(−1)kCk+r−∑i=1kni−(k+1)k−1
证明: 不考虑 n i n_i ni的限制,即从集合 S ′ = { ∞ ∗ a 1 , ∞ ∗ a 2 , . . . , ∞ ∗ a k } S' = \{\infty*a_1, \infty*a_2,..., \infty*a_k\} S′={∞∗a1,∞∗a2,...,∞∗ak}取出 r r r个元素,根据定理一可以得到方案数为 C k + r − 1 k − 1 C_{k+r-1}^{k-1} Ck+r−1k−1。但是这个方案数可能是偏大的,因为可能对于某种元素 a i a_i ai我们取出了 x > n i x>n_i x>ni个元素,考虑减去每个元素的这一部分:设对于 a i a_i ai已经取出了 n i + 1 n_i+1 ni+1个元素,还需要从 S ′ S' S′中取出 r − n i − 1 r - n_i-1 r−ni−1个元素,这样就满足了仅对于 a i a_i ai非法取多的情况,同理对于所有的 a i ( 1 ≤ i ≤ k ) a_i(1\leq i \leq k) ai(1≤i≤k),那么此时计算得到的方案数为 C k + r − 1 k − 1 − ∑ i = 1 k C k + r − n i − 2 k − 1 C_{k+r-1}^{k-1}- \sum_{i = 1}^kC_{k+r-n_i-2}^{k-1} Ck+r−1k−1−∑i=1kCk+r−ni−2k−1 。但是这不是答案,因为如果在考虑拿至少 n i + 1 n_i+1 ni+1个 a i a_i ai后,也同样计算了至少拿 n j + 1 n_j+1 nj+1个 a j a_j aj的情况,那么就多减了每两种情况的交集;同理根据容斥,又多加了三个情况的的交集,以此类推。因此上式得证。