[关闭]
@SovietPower 2020-09-19T13:49:25.000000Z 字数 1755 阅读 1768

容斥 反演 学习笔记

数学,数论



参考:
https://blog.csdn.net/werkeytom_ftd/article/details/74701513
https://www.luogu.org/blog/KingSann/chu-tan-rong-chi-yuan-li
https://ac.nowcoder.com/discuss/184169?type=101&order=0&pos=10&page=1

这里只是简单整理一下,方便复习。


最基本的容斥

种属性,若干个物品,每个物品可能有这种属性的若干种。假设我们可以容易地计算出表示属性中至少包含集合的物品个数。求至少有种属性的物品个数。(就是最经典的模型,有三科语数英,已知语数英各有多少人满分,语数、数英、语英分别有多少人同时满分,有多少人三科都满分,求至少有一科满分的人有多少)
不知道为什么反正我们知道,答案是为所有科目的子集,中所有科目都满分的人数)。
考虑它为什么是对的。对于一个有种属性的物品,当时,显然不会被计算。我们需要证明,时,它会被恰好计算一次。
不难发现在枚举种属性(大小为)时,它会被计算次。所以它被统计的次数(把一个提出来,补一个,二项式定理一下)。

更一般的容斥

种属性,若干物品。假设我们可以容易地计算出,表示属性包含集合的物品个数。且给定表示,当物品拥有个属性时它的价值是多少。求所有物品的价值和。
我们需要确定一个容斥系数,使得
同上,考虑令每个物品被算入的贡献等于我们想要的数。即对于一个拥有种属性的物品,需要满足

是可以递推的。假设已知

复杂度是的。
把阶乘展开发现大概能写成一个卷积形式,可以多项式求逆做到。也可以反演去推。(见上面链接)
当然大部分题中是用/手推来找规律算的。

例题:“玲珑杯” 线上赛 Round#17 B

给定个数。求中有多少个数能被奇数个整除。
组数据,


至少整除某个集合的数有多少个很好算,所以考虑容斥。设容斥系数是,答案是
对于被个数整除的数,有。可以递推或者打表得出(当然有规律是)。然后就做完啦。


下面只是一些要背的式子

二项式反演

例题:[BZOJ]。

斯特林反演

例题:[BZOJ4671]异或图,雅礼集训18.1.16 方阵

莫比乌斯反演

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注