子集反演:
\[f_S=\sum\limits_{T\in S}g_T
\]
\[g_S=\sum\limits_{T\in S}(-1)^{|S|-|T|}f_S
\]
\(f\) 和 \(g\) 均为集合到实数的函数。
证明:
\[g_S=\sum\limits_{T\in S}(-1)^{|S|-|T|}\sum\limits_{O\in T}g_O
\]
\[g_S=\sum\limits_{O\in S}g_O\sum\limits_{T\in S/O}(-1)^{|T|}
\]
定义函数 \(sgn(S)=\sum\limits_{T\in S}(-1)^{|S|}\),包含空集。
\[sgn(S)=\sum\limits_{i=0}^{|S|}\binom{|S|}{i}(-1)^i1^{|S|-i}=0^{|S|}=[|S|=0]
\]
因此:
\[g_S=\sum\limits_{O\in S}g_O\times[O=S]=g_S
\]
考虑给出了 \(f\),如何快速求 \(g\)。
首先回顾一下高维前缀和。这里钦定每一维的大小为 \(2\),按照维度做前缀和即可。这样知道 \(g\) 后求 \(f\) 是十分容易的。
知道 \(f\) 求 \(g\) 和知道 \(g\) 求 \(f\) 的区别不大,维护两个前缀和,分别钦定子集大小为奇数/偶数的时候系数为 \(1\) 或 \(-1\) 即可。
min-max 容斥:
\[\max(S)=\sum\limits_{T\in S}(-1)^{|T|+1}\min(T)
\]
证明:
不妨枚举最小值,产生的贡献形如 \(x\times\sum\limits_{i=0}^y\binom{y}{i}(-1)^{i+1}\),分析后面的贡献,不难类似前面 \(sgn(S)\) 函数,得到产生贡献当且仅当 \(y=0\)。
扩展:
\[kthmax(S)=\sum\limits_{T\in S}(-1)^{|T|-k}\binom{|T|-1}{k-1}\min(T)
\]
证明小于第 \(k\) 大的数不会产生贡献:
\[x\times\sum\limits_{i=0}^{y}(-1)^{i-k}\binom{y}{i}\binom{|T|-1}{k-1}
\]
随便提一下就能发现没有贡献。
二项式反演:
\[f(n)=\sum\limits_{i=0}^n\binom{n}{i}g(i)
\]
\[g(n)=\sum\limits_{i=0}^n\binom{n}{i}(-1)^{n-i}f(i)
\]
证明:
存在容斥意义上的组合证明 。
\[g(n)=\sum\limits_{i=0}^n\binom{n}{i}(-1)^{n-i}\sum\limits_{j=0}^i\binom{i}{j}g(j)
\]
\[g(n)=\sum\limits_{i=0}^ng(i)\sum\limits_{j=i}^n\binom{n}{j}\binom{j}{i}(-1)^{n-j}
\]
\[g(n)=\sum\limits_{i=0}^ng(i)\sum\limits_{j=i}^n\binom{n}{i}\binom{n-i}{j-i}(-1)^{n-j}
\]
\[g(n)=\sum\limits_{i=0}^ng(i)\binom{n}{i}(-1)^n\sum\limits_{j=i}^n\binom{n-i}{j-i}(-1)^j
\]
单独研究后面的部分 \(\sum\limits_{j=i}^n\binom{n-i}{j-i}(-1)^j=\sum\limits_{j=0}^{n-i}\binom{n-i}{j}(-1)^{i+j}\),根据上面的 \(sgn(S)\),该式为 \((-1)^i\times[n=i]\)。
二项式反演、子集反演、min-max 容斥都是利用构造一些易于求解的函数来解决问题。