反演题乱做

子集反演:

fS=TSgT

gS=TS(1)|S||T|fS

fg 均为集合到实数的函数。

证明:

gS=TS(1)|S||T|OTgO

gS=OSgOTS/O(1)|T|

定义函数 sgn(S)=TS(1)|S|,包含空集。

sgn(S)=i=0|S|(|S|i)(1)i1|S|i=0|S|=[|S|=0]

因此:

gS=OSgO×[O=S]=gS

考虑给出了 f,如何快速求 g

首先回顾一下高维前缀和。这里钦定每一维的大小为 2,按照维度做前缀和即可。这样知道 g 后求 f 是十分容易的。

知道 fg 和知道 gf 的区别不大,维护两个前缀和,分别钦定子集大小为奇数/偶数的时候系数为 11 即可。

min-max 容斥:

max(S)=TS(1)|T|+1min(T)

证明:

不妨枚举最小值,产生的贡献形如 x×i=0y(yi)(1)i+1,分析后面的贡献,不难类似前面 sgn(S) 函数,得到产生贡献当且仅当 y=0

扩展:

kthmax(S)=TS(1)|T|k(|T|1k1)min(T)

证明小于第 k 大的数不会产生贡献:

x×i=0y(1)ik(yi)(|T|1k1)

随便提一下就能发现没有贡献。

二项式反演:

f(n)=i=0n(ni)g(i)

g(n)=i=0n(ni)(1)nif(i)

证明:

存在容斥意义上的组合证明 。

g(n)=i=0n(ni)(1)nij=0i(ij)g(j)

g(n)=i=0ng(i)j=in(nj)(ji)(1)nj

g(n)=i=0ng(i)j=in(ni)(niji)(1)nj

g(n)=i=0ng(i)(ni)(1)nj=in(niji)(1)j

单独研究后面的部分 j=in(niji)(1)j=j=0ni(nij)(1)i+j,根据上面的 sgn(S),该式为 (1)i×[n=i]


二项式反演、子集反演、min-max 容斥都是利用构造一些易于求解的函数来解决问题。

posted @   BYR_KKK  阅读(10)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
点击右上角即可分享
微信分享提示