zoukankan      html  css  js  c++  java
  • 容斥原理、鸽巢原理快速入门

    一、容斥定理

    基本描述

    在计数时,必须不重不漏。为了使得重叠部分不被重复计算,人们研究出一种新的计数方法,这种方法的基本思想是:先不考虑重叠的情况,把包含于某内容中的所有对象的数目先计算出来,然后把计数时重复计算的数目排斥出去,使得计算的结果既无重复也无遗漏,这种计数的方法称为容斥原理。

    公式表述

    image

    公式的解释:
    目的是求解m个集合的并集,首先将m个集合相加,减去集合间两两相交的部分,加上三三相交的部分,再减去四四相交的部分……一直到m个集合相交的部分,当m为偶数时,最后一项的符号为负数,否则为正数。

    举例

    1. 当存在两个集合A与B,容斥关系公式为:A∪B =|A∪B| = |A|+|B| - |A∩B |
    2. 当存在三个集合A、B、C,容斥关系公式为:|A∪B∪C| = |A|+|B|+|C| - |A∩B| - |B∩C| - |C∩A| + |A∩B∩C|

    练习

    1. UVA 11806 题解
    2. UVA 10325 题解
    3. HDU 1796 题解
    4. HDU 1695
    5. HDU 2204
    6. HDU 4407
    7. HDU 2841
    8. 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

    练习

    1. POJ 2356
    2. HDU 1205
    3. POJ 3370
    4. POJ 3145
    5. HDU 5762
    6. HDU 5776
    7. POJ 3370

    (题目来源网络,部分题目可能需要前置技能)

  • 相关阅读:
    light_oj 1197 区间素数筛
    light_oj 1213
    light_oj 1220 素数分解
    bestcoder#43 1002 在数组中找两个数的和取模的最大值 二分
    6月7日 bc总结
    省赛总结
    二分图最大点权独立集 二分图最大点权覆盖
    终于能理解kmp算法了
    hduoj2087 统计串t在串s中出现的次数,重叠不算 KMP
    带权二分图的最大权匹配 KM算法模版
  • 原文地址:https://www.cnblogs.com/pengwill/p/7367031.html
Copyright © 2011-2022 走看看