一、容斥定理
基本描述
在計數時,必須不重不漏。為了使得重疊部分不被重復計算,人們研究出一種新的計數方法,這種方法的基本思想是:先不考慮重疊的情況,把包含於某內容中的所有對象的數目先計算出來,然后把計數時重復計算的數目排斥出去,使得計算的結果既無重復也無遺漏,這種計數的方法稱為容斥原理。
公式表述
公式的解釋:
目的是求解m個集合的並集,首先將m個集合相加,減去集合間兩兩相交的部分,加上三三相交的部分,再減去四四相交的部分……一直到m個集合相交的部分,當m為偶數時,最后一項的符號為負數,否則為正數。
舉例
- 當存在兩個集合A與B,容斥關系公式為:A∪B =|A∪B| = |A|+|B| - |A∩B |
- 當存在三個集合A、B、C,容斥關系公式為:|A∪B∪C| = |A|+|B|+|C| - |A∩B| - |B∩C| - |C∩A| + |A∩B∩C|
練習
(題目來源網絡,部分題目可能需要前置技能)
二、鴿巢原理(抽屜原理)
基本描述
桌子上有是個蘋果,把這十個蘋果放到九個抽屜里,無論怎么放,我們會發現至少會有一個抽屜里面至少放兩個蘋果。這一現象就是所說的“抽屜原理”。
更一般的表述:如果每一個抽屜代表一個集合,每一個蘋果就可以代表一個元素。加入有n+1個元素放到n個集合中去,其中必定有一個集合里至少有兩個元素。
第一抽屜原理
原理1
把多余n+1個物體放到n個抽屜里,則至少有一個抽屜里的東西不少於兩件。
原理2
把多余mn+1(n不為0)個物體放到n個抽屜里面,則至少有一個抽屜里面不少於(m+1)的物體。
第二抽屜原理
把(mn -1 )個物體放入n個抽屜中,其中必須有一個抽屜不多余(m-1)個物體。
如將3*5-1 = 14個物體放入5個抽屜中,則必定有一個抽屜中的物體數目少於3-1=2.
舉例
屬相問題
屬相有12個,那么任意37個人中,至少有幾個人屬相相同?
上取整(37 / 12) = 4
招聘問題
有300人到招聘會求職,其中軟件設計有100人,市場營銷有80人,財務管理有70人,人力資源管理有50人。那么至少有多少人找到工作才能保證一定有70人找的工作專業相同?
考慮最差情況,即軟件設計,市場營銷,財務管理均招了69人,人力資源管理招了50人,此時再多招1人,就有70人找的工作專業相同了。
故答案為 69*3 + 50 + 1 = 258
襯衫問題
一個抽屜里有20件襯衫,其中4件是藍的,7件是灰的,9件是紅的,則應從中隨意取出多少件才能保證有5件是同顏色的?
考慮最差情況,即已經取出了4件藍色,4件灰色,4件紅色,再多取出1件就滿足條件。
故答案為 4 + 4 + 4 + 1 = 13
練習
- POJ 2356
- HDU 1205
- POJ 3370
- POJ 3145
- HDU 5762
- HDU 5776
- POJ 3370
(題目來源網絡,部分題目可能需要前置技能)