容斥原理、鸽巢原理快速入门
一、容斥定理
基本描述
在计数时,必须不重不漏。为了使得重叠部分不被重复计算,人们研究出一种新的计数方法,这种方法的基本思想是:先不考虑重叠的情况,把包含于某内容中的所有对象的数目先计算出来,然后把计数时重复计算的数目排斥出去,使得计算的结果既无重复也无遗漏,这种计数的方法称为容斥原理。
公式表述
公式的解释:
目的是求解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
(题目来源网络,部分题目可能需要前置技能)