容斥原理

首先,这篇blog可能很水

关于容斥原理:
\(\{A_1,A_2,A_3,\dots,A_n\}\)总共\(n\)个集合
已知任意几个集合的交集大小,要求它们的并集
则并集大小为:

\[\sum_{B\subseteq\{A_1,A_2,A_3,\dots,A_n\}}(-1)^{|b|+1}|\cap_{A_i\in B}A_i| \]

当然,这是个已经烂大街了的式子

说人话,就是选择如果选了偶数个集合,答案就减去这些集合的交集的大小,如果选了奇数个,就加上它们交集的大小


总结一下解容斥题的思路
如果能明显看出来求那些集合的交集,那直接用式子就行

如果是有一些限定条件,然后求在这些限制下的方案数
可以先考虑没有这些限制条件的方案数
然后对答案的补集容斥,也就是至少违反一个限制条件的
不考虑限制的方案数减去违反奇数个限定条件的,加上违反偶数个限定条件的,就是最终答案
实际上是一个取补集的方法

另外有一点,就是用容斥的时候,我们假定有一个条件不满足,就不用考虑是不是其他条件也会不满足
因为如果除了我们假定的这个条件,还有不满足的条件,那么这种方案一定会在算别的情况的时候被减去
至于为什么是很好想的,假如指定\(A\)条件,有一种情况是\(B\)也不满足,那么多算一次,肯定会在考虑同时不满足\(A,B\)是时候被减去
这是容斥最基本的性质,很简单看一下刚才那个公式也能知道
但是刚学的时候特别容易被绕进去我就是这样

原文地址:https://www.cnblogs.com/suxxsfe/p/12527215.html