容斥原理(Principle of inclusion-exclusion)一般应用于集合,主要对重叠部分(overlap)的处理。

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

基本公式:

|A1∪A2∪⋯∪Am|=∑1≤i≤mAi−∑1≤i<j≤m∣∣Ai∩Aj∣∣+∑1≤i<j<k≤m∣∣Ai∩Aj∩Ak∣∣+(−1)m−1|A1∩A2∩⋯∩Am|

\left|A_1\cup A_2\cup \cdots \cup A_m\right|=\sum_{1\leq i\leq m}A_i-\sum_{1\leq i

|A1∪A2∪A3|=(|A1|+|A2|+|A3|)−(|A1∩A2|+|A2∩A3|+|A1∩A3|)+|A1∩A2∩A3|

\left|A_1\cup A_2\cup A_3\right|=\left(\left|A_1\right|+\left|A_2\right|+\left|A_3\right|\right)-\left(\left|A_1\cap A_2\right|+\left|A_2 \cap A_3\right|+\left|A_1\cap A_3\right|\right)+\left|A_1\cap A_2\cap A_3\right|

1. 简单的应用

在一根长的木棍上有三种刻度线,第一种刻度线将木棍分成10等份,第二种将木棍分成12等份,第三种将木棍分成15等份。如果沿每条刻度线将木棍锯断,木棍总共被锯成多少段?

分析:
很显然,要计算木棍被锯成多少段,只需要计算出木棍上共有多少条不同的刻度线,在此基础上加1就是段数了。

若按将木棍分成10等份的刻度线锯开,木棍有9条刻度线。在此木棍上加上将木棍分成12等份的11条刻度线,显然刻度线有重复的,如5/10和6/12都是1/2。同样再加上将木棍分成15等份的刻度线,也是如此。所以,我们应该按容斥原理的方法来解决此问题。用容斥原理的那一个呢?想一想,被计数的事物有那几类?每一类的元素个数是多少?

总长看成单位1分别分成10、12、15段。1/10与1/12的最小公倍数1/2,1/10与1/15的最小公倍数1/5,1/12与1/15的最小公倍数1/3,1/10,1/12和1/15的最小公倍数为1,有:

10+12+15-(2+5+3)+1=28

容斥原理 —— 不重不漏的计数相关推荐

  1. 不重不漏的分析方法:MECE分析法

    MECE分析法 麦肯锡的巴巴拉·明托(Barbara Minto)顾问在金字塔原理中提到的一个重要原则就是MECE,那么满足MECE的分析方法就是MECE分析法,全称 Mutually Exclusi ...

  2. 「Note」Math not for OI

    大家以我为戒 千万不要这么学 oi ( todolist 会越鸽越长的 高代那部分莫名其妙写了一大堆 其实我写完之后也没复习过几遍.. 而且千万不要抄看起来很厉害实际上也很厉害的东西抄爽了,, 更不要 ...

  3. BZOJ 1009 [HNOI2008]GT考试

    1009: [HNOI2008]GT考试 Time Limit: 1 Sec  Memory Limit: 162 MB Submit: 2154  Solved: 1327 [Submit][Sta ...

  4. BZOJ 3925 [Zjoi2015]地震后的幻想乡

    题目:http://www.lydsy.com/JudgeOnline/problem.php?id=3925 题意:给定一个 n n点mm边的无向图,没有重边和自环,每条边的权值为 [0,1] [0 ...

  5. 0x35.数论 - 组合数学与计数

    目录 一.计数原理 1.加法原理 2.乘法原理 3.减法原理 二.排列组合 1.排列数 2.组合数 3.数学题 三.组合数的计算 1. 加法递推O(n2)O(n^2)O(n2) 2. 乘法递推O(n) ...

  6. CodeForces - 1486F Pairs of Paths(树上计数+容斥)

    题目链接:点击查看 题目大意:给出一棵 nnn 个点的树,再给出 mmm 条路径,现在问有多少个路径对 (x,y)(x,y)(x,y),满足第 xxx 条路径和第 yyy 条路径有且仅有一个交点 题目 ...

  7. [XSY] 计数(DP,NTT,分治)

    计数 考虑转化题目,变为网格上有若干个点,要从(0,0)(0,0)(0,0)走到(n,an+1)(n,a_{n+1})(n,an+1​) ,每一步只能往右走一步或往上走一步,且若当前在(i,j)(i, ...

  8. 【vijos】1770 大内密探(树形dp+计数)

    https://vijos.org/p/1770 不重不漏地设计状态才能正确的计数QAQ 虽然可能最优化是正确的,但是不能保证状态不相交就是作死.... 之前设的状态错了... 应该设 f[i][0] ...

  9. 基于SpringBoot监控Java项目,暴漏springboot内置端点

    基于SpringBoot监控Java项目的指标 文章目录 基于SpringBoot监控Java项目的指标 监控java项目有哪些方案 springboot内置端口 prometheus 如何使用 sp ...

最新文章

  1. 通俗易懂讲解梯度下降法!
  2. Linux【命令】修改文件内容
  3. 反射:通过反射获取成员变量并使用
  4. web前端入门学习 css(7)css高级技巧 (精灵图、字体图标、css三角、鼠标样式、表单轮廓线、文本框拖拽、垂直对齐、图底空白缝隙、margin负值、溢出文字省略号、文字环绕、css初始化)
  5. oracle服务器的操作系统,Oracle Linux 操作系统及数据库的时区机制分析
  6. Linux下V4L2编程小结
  7. js页面加载前执行_做一名合格的前端开发工程师:Javascript加载执行问题探索
  8. flink入门_Flink入门:读取Kafka实时数据流,实现WordCount
  9. 高中计算机竞赛教案,信息技术教学案例评比——选择排序的算法实现(金华第一中学)...
  10. iOS 相册图片选择器
  11. [2018.10.31 T2] 电梯
  12. 图解深度学习-梯度下降学习率可视化
  13. 丹佛斯冷媒尺汉化下载_koolapp手机版
  14. python get请求下载excel,前端开发,使用get和post方式下载excel表格
  15. 微信小程序物流仓库平台+后台管理系统|前后分离VUE
  16. 格子广告+php,GitHub - liujijun95/easy-amazon-advertising: 基于 amazon advertising v2 接口的 PHP 广告信息组件...
  17. 小米世界第三,华为首次跌出前五
  18. 使用Java API访问HFDS
  19. lotus domino_保护IBM Lotus Domino Web服务器的安全:案例研究
  20. 离谱,还有这种自暴自弃的翻译?

热门文章

  1. 软件测试python测试步骤_软件测试员必备基础:3分钟带你入门自动化测试!
  2. android获取上下文对象,如何在Android服务类中获取上下文
  3. 基于nginx搭建直播,web播放视频方案
  4. android view 屏幕外,安卓如何让View往屏幕外隐藏?
  5. Kafka的安装部署(分布式部署安装)
  6. python中文单词_python – 如何显示中文单词,而不是unicode单词
  7. python装饰器-简易版
  8. tf.train.Example的用法(转)
  9. 感觉前路任重而道远呀。
  10. Flex【原创】惯性定位效果