容斥原理

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

定义

如果被计数的事物有A、B、C三类,那么,A类和B类和C类元素个数总和= A类元素个数+ B类元素个数+C类元素个数—既是A类又是B类的元素个数—既是A类又是C类的元素个数—既是B类又是C类的元素个数+既是A类又是B类而且是C类的元素个数。(A∪B∪C = A+B+C - A∩B - B∩C - C∩A + A∩B∩C)

A,B,C,D四类事物,\(|A\cup B\cup C\cup D |\)=

\(A+B+C+D-A \cap B - A\cap C-A\cap D-B\cap C-B\cap D-C\cap D+A\cap B\cap C\)

\(A\cap B\cap D+A\cap C\cap D+B\cap C\cap D-A\cap B\cap C\cap D\)

记数的事物有m个,

例题:

HAOI2008]硬币购物 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)


可以使用2进制01的形式枚举n个集合。

dfs枚举是否要第x个集合,1的个数为0个舍弃,1的个数为奇数用+,1的个数为偶数个用-,


两个集合大小之和等于交集大小加并集大小

posted on 2022-05-04 23:02  naiji  阅读(69)  评论(0编辑  收藏  举报