容斥与反演
感觉这部分内容的学习不够完备,进行一些系统性的总结。
反演
反演的本质是线性变换求逆。
考虑假设有 fn=∑ian,i×gi,已知 f 如何求 g?
显然可以写成矩阵乘向量的形式,即 F=AG,那么 G=A−1F。
理论上,只要 A 可逆,我们可以通过高斯消元在 O(n3) 的代价下实现任意反演。
我们学习的所有反演其实都相当于掌握一些特殊矩阵的逆的性质,加速反演的过程。
典
容斥原理
∪ni=1Pi=∑S∈[n],S≠∅(−1)|S|−1∩j∈SPj
求集合的交可以转化为求集合补集的并的补集。
二项式反演
有两种经典的二项式反演:
fi=n∑j=i(ji)gj⟷gi=n∑j=i(−1)j−i(ji)fjfi=i∑j=0(ij)gj⟷gi=i∑j=0(−1)i−j(ij)fj
证明很简单,考虑把一个式子代进另一个式子进行组合恒等变形即可。
Min-Max 容斥
maxi∈Sai=∑T⊂S,T≠∅(−1)|T|−1minj∈Tajmini∈Sai=∑T⊂S,T≠∅(−1)|T|−1maxj∈Taj
前者构造集合 Pi={x≤ai},后者构造 Pi={x≥ai},就变成容斥原理了。
Min-Max 容斥一个很经典的使用是其期望形式,将一个集合最后出现的时间期望转化成第一个出现的时间期望。
扩展 Min-Max 容斥
一个自然的想法是如果我知道每个子集的最小值,我应该能知道第 k 大的元素值。
kthmax(S)=∑T⊂S,T≠∅f(|T|)min(T),f(|T|) 是容斥系数。
考虑第 i 大的元素的贡献:∑ij=1(i−1j−1)f(j)。
我们希望构造 f,使得:[i=k]=∑ij=1(i−1j−1)f(j)。
考虑做一点简单的变形:[i=k−1]=∑ij=0(ij)f(j+1)。
这明显是二项式反演的形式,对其进行二项式反演。
f(i+1)=i∑j=0(−1)i−j(ij)[j=k−1]f(i+1)=(−1)i−k+1(ik−1)f(i)=(−1)i−k(i−1k−1)
那么 kthmax-min 容斥即为:
kthmax(S)=∑T⊂S,T≠∅(−1)|T|−k(|T|−1k−1)min(T)
令人欣喜的是扩展 Min-Max 容斥在期望下也成立。
顺便一提,有了 kthmax 的式子,kthmin 就是小菜一碟了。
gcd-lcm 容斥
将 min-max 容斥在数论中运用,从素数分解的角度来看待一个数,gcd 即为每一维向量取 min 的结果,lcm 即为 max。
套用 Min-Max 容斥,可以得到:
lcm(S)=∏T⊂S,T≠∅gcd(T)(−1)|T|−1
斯特林反演
与二项式反演类似,斯特林反演也存在两种经典形式:
fi=n∑j=i{ji}gj⟷gi=n∑j=i(−1)j−i[ji]fjfi=i∑j=1{ij}gj⟷gi=i∑j=1(−1)i−j[ij]fj
斯特林反演的证明较为麻烦,需要使用反转公式,限于篇幅不展开证明。
集合划分容斥(广义斯特林反演)
这东西似乎也被称为广义斯特林反演,斯特林反演是集合划分容斥的一个特例。
集合划分容斥之于斯特林反演,类似于容斥原理之于二项式反演。
其应用场景为限定所有元素两两不同,我们可以钦定等价类集合进行容斥。
记一个等价类集合为 S,其容斥系数为 (−1)|S|−1(S−1)!,考虑证明。
考虑一个实际方案的等价类集合,我们希望一个实际等价类集合 S 的容斥系数和为 [|S|≤1],记 fi=[i≤1]。
记钦定等价类集合 T 时的容斥系数为 g|T|,那么有 F(x)=expG(x),其中 F,G 为两个数列的 EGF。
可以得到 G(x)=lnF(x)=ln(1+x)=∑i=0(−1)i−1xii,即 gi=(−1)i(i−1)!。
我们可以进一步利用集合划分容斥解决恰好 k 个等价类的问题,我们增加形式元 y 代表等价类个数,将上述容斥系数乘上 y,所求即为 yk 项系数,考虑插值,即可直接套用集合划分容斥。
例 PE495
将 n! 拆分成 k 个互不相同的正整数的乘积的方案数。
n≤104,k≤30
先将 n 以内的质数筛出,计算出每个质数在 n! 中的次数。
使用集合划分容斥处理两两不同的限制,由于等价类集合大小相同即可视为无区别,我们搜索划分数即可。
对于每个质数,使用计数背包将其指数划分至各个等价类中,乘上容斥系数计算方案数即可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具