容斥原理、鸽巢原理快速入门
来源:互联网 发布:eclipse图形界面编程 编辑:程序博客网 时间:2024/05/18 18:15
一、容斥定理
基本描述
在计数时,必须不重不漏。为了使得重叠部分不被重复计算,人们研究出一种新的计数方法,这种方法的基本思想是:先不考虑重叠的情况,把包含于某内容中的所有对象的数目先计算出来,然后把计数时重复计算的数目排斥出去,使得计算的结果既无重复也无遗漏,这种计数的方法称为容斥原理。
公式表述
公式的解释:
目的是求解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|
练习
- UVA 11806 题解
- UVA 10325 题解
- HDU 1796 题解
- HDU 1695
- HDU 2204
- HDU 4407
- HDU 2841
- POJ 1091
(题目来源网络,部分题目可能需要前置技能)
二、鸽巢原理(抽屉原理)
基本描述
桌子上有是个苹果,把这十个苹果放到九个抽屉里,无论怎么放,我们会发现至少会有一个抽屉里面至少放两个苹果。这一现象就是所说的“抽屉原理”。
更一般的表述:如果每一个抽屉代表一个集合,每一个苹果就可以代表一个元素。加入有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
(题目来源网络,部分题目可能需要前置技能)
- 容斥原理、鸽巢原理快速入门
- 容斥原理入门
- 浅谈容斥原理鸽巢原理(抽屉原理
- ZOJ 3868(容斥原理+快速幂)
- hdu4135(容斥原理入门题)
- 鸽巢原理和容斥原理小结
- 容斥原理
- 容斥原理 POJ3904
- 【容斥原理】八
- 【八】容斥原理
- 广义容斥原理
- 容斥原理
- 容斥原理 专题
- 容斥原理 专题
- hdu4390 容斥原理
- hdu1695 容斥原理
- HDU3929(容斥原理)
- 整除 容斥原理
- linux下putty的配色方案
- 对话框背景真正起作用的做法。(有内存泄露,不过可以通过各个控件的CtrlColor方法实现)
- c#中在一个窗体中触发另一个窗体的事件
- ES6学习笔记:数组
- 最新机器视觉研究团队汇总
- 容斥原理、鸽巢原理快速入门
- Windows API 绘图函数
- HDU6071 Lazy Running【最短路】
- poj 2406 Power Strings(kmp)
- windows api Path Functions
- JavaScript比较新的前端面试题
- JVM内存分配与GC
- Linux 内核版本命名
- CWindow