容斥原理
来源:互联网 发布:怎么举报网络博客 编辑:程序博客网 时间:2024/06/05 01:04
容斥原理解决的往往是一类求若干集合的并集问题,且一般都是易求交集,难求并集。其思想的核心正是把对集合的 or 操作都转化为 and 操作。
规定一些记号:用大写字母表示一个集合,
下面就举一例具体分析容斥原理。
在
用
首先考虑能被 3 整除的数组成的集合
同理,对于能被 5 整除的数组成的集合
正如上面的维恩图所示,我们所得到的
既然多加了,那么只要把这部分减去即可,即最终的答案
设有
可以利用下面的图得到一个更为直观的解释:
在求两个集合的并集的时候,只需考虑减去中间重复计数的一小部分,即它们的交集。但在三个集合中,如果同样为了避免重复计数而减去三个集合之间两两的交集,就会发现,三个集合共同的交集被多减去了一次,因此要加回去。
除了上面这个问题外,其实还有一个我们常用的东西用到了容斥原理的思想,那就是二维前缀和。
如上图,预处理出左上角到每一个
利用这个原理不难推出满足普遍规律的式子。一般地,有
关于容斥原理的证明,我不会严格的表达,但在这里大致记录一下思路:用数学归纳法证明。
对于两个集合的情况,显然是成立的。
只要对于
例如,在
这样就可以证明容斥原理的正确性了。
总结一下,可以发现计算规律:把所有集合相加,同时减去所有偶数重复,加上所有奇数重复。简单来记忆就是减偶加奇。具体编程实现,要通过题目来说明。
容斥原理看似只是一堆加加减减的操作,但其实在实际应用中还是有一定的思维难度。如何不重复、不遗漏地求出具有若干属性的值,也是一门艺术。
- 容斥原理
- 容斥原理 POJ3904
- 【容斥原理】八
- 【八】容斥原理
- 广义容斥原理
- 容斥原理
- 容斥原理 专题
- 容斥原理 专题
- hdu4390 容斥原理
- hdu1695 容斥原理
- HDU3929(容斥原理)
- 整除 容斥原理
- HDU4390(容斥原理)
- 容斥原理
- poj3904 容斥原理
- 容斥原理应用
- bzoj2393 容斥原理
- hdu4135 容斥原理
- js中canvas操作
- ZOJ-3804---YY's Minions (模拟)
- 骑记APP——IOS版登录流程体验报告
- 青蛙的约会(扩展欧几里德)
- 编程练习2——05
- 容斥原理
- LINUX I2C驱动偶尔出现段错误原因之一
- mybits 注解
- 统计一条语句中的空格、字母、数字的个数
- 【排序算法总结】选择排序
- Deploy Location!
- 编程练习2——06
- github上如何修改语言设置
- Js学习第九天