「总结」容斥。三.广义容斥

Posted lrefrain

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了「总结」容斥。三.广义容斥相关的知识,希望对你有一定的参考价值。

首先让我们考虑反演的真正原理。

$fr.$反演原理

对于两个函数$f$和$g$。

我们知道:

$$g(n)=sumlimits_{i=0}^{n}a_{n,i}f(i)$$

$$f(n)=sumlimits_{i=0}^{n}b_{n,i}g(i)$$

将第一个式子代入第二个。

$$egin{array}{rcl}\f(n)&=&sumlimits_{i=0}^{n}b_{n,i}sumlimits_{j=0}^{i}a_{i,j}f(j)\&=&sumlimits_{j=0}^{n}f(j)sumlimits_{i=j}^{n}a_{i,j}b_{n,i}\&=&sumlimits_{j=0}^{n}f(j)[n=j]\ end{array}$$

那么:

$$sumlimits_{j=i}^{n}a_{i,j}b_{n,j}=[n=j]$$

设函数

$$c_{i,j}=[i=j]$$

那么:

$$sumlimits_{j=i}^{n}a_{i,j}b_{n,j}=c_{n,j}$$

也就是所谓布尔表达式的提出。

这就是反演的真正原理了。

 

$se.$广义容斥

我所谓广义容斥不是二项式反演(二项式反演真也叫广义容斥),而是容斥原理的广义应用。

也就是容斥系数的构造。

我们发现上面那个式子,如果我们将$b$设为容斥系数,而已经得到了$a$和$c$,那么我们就可以解出来这样的系数$b$,在复杂度允许的情况下甚至可以高斯消元直接暴力求解。

复杂度不允许的情况下就需要反演的辅助了。

反演以一种既定的经典形式快速的求出容斥系数。

反演前面说的够多了。

实在不行打表找规律嘛。

 

$th.$系数构造

还是用最开始那种方法。我们求一个比较好求的数组$g$并且,这个$g$和我们需要的答案数组$f$有莫大的关系,我们就设:

$$ans=sumdelta f$$

这个时候的$delta$就是容斥系数了。

然后带入$g$求解。

 

另外一种方式是考虑每种方案被计入的次数。

设$m$为一种枚举方式,这个方案是$n$,某个方案满足的条件是$P$,需要满足的条件是$Q$。

$$sum_ma_mdelta_m=[P(n)=Q]$$

简单的例子。

小学生一个班里有$A$个拿了语文$100$,$B$个数学100,$C$个英语100,$D$又有语文又有数学.....。

我们问至少有多少人拿了一个$100$。

发现$A,B,C,D,E,F$中用奇加偶减得到拿到$n$个100分的人被计算的次数就是:

$$sumlimits_{i=1}^{n}inom{n}{i}f(i)$$

我们需要的是:

$$sumlimits_{i=1}^{n}inom{n}{i}f(i)=[n>=1]$$

那么可以求出$f(i)=(-1)^{i-1}$。

证明:

等于$0$时显然成立。

$$sumlimits_{i=1}^{n}inom{n}{i}(-1)^{i-1}=sumlimits_{i=0}^{n}inom{n}{i}(-1)^{i-1}+1=0+1=1$$

如果要求至少拿了$m$次$100$的。

其实修改条件即可。

$$sumlimits_{i=1}^{n}inom{n}{i}f(i)=[n>=m]$$

高斯消元就可以解出。

时间复杂度不允许的情况下(大多数情况),我们期盼找到一种经典模型来适配它,利用反演得到容斥系数。

(说实话配系数挺恶心的)。

暂时这么多。

以上是关于「总结」容斥。三.广义容斥的主要内容,如果未能解决你的问题,请参考以下文章

「总结」容斥原理

「总结」容斥。二.反演原理 5.划分容斥

HDU - 6314:Matrix (广义容斥)(占位)

HDU - 6314 Matrix(广义容斥原理)

luogu 5505 [JSOI2011]分特产 广义容斥

luoguP4491 [HAOI2018]染色 广义容斥原理 + FFT