参考资料
炫酷反演魔术,打开了我新世界的大门,原来这些反演都是一个东西!!!
二项式反演
简单的错排递推式
i=0∑n(−1)iCni(n−i)!
- 即枚举每一次至少几个位置不合法,最后容斥出0个位置不合法的方案。
- 考虑恰好有m(m>0)个位置不合法的方案,对于一种m个位置的选择来说,它会在枚举至少0…m-1的时候被算一次。即∑i=0m(−1)iCmi=(1−1)m=[m=0],最后对于m>0的贡献都为0,只有m=0的贡献为1,即我们要求的答案。
式子
f(n)=i=0∑nCnig(i)
g(n)=i=0∑n(−1)n−iCnif(i)
推导:
- 首先有
i=0∑n(−1)iCni=i=0∑n(−1)iCni∗1n−i=(−1+1)n=[n=0]
- 然后
g(n)=i=0∑n[n−i=0]∗Cnig(i)
=i=0∑nj=0∑n−i(−1)jCn−ij∗Cnig(i)
=i=0∑nj=0∑n−i(−1)jCn−ji∗Cnjg(i)
=j=0∑n(−1)jCnji=0∑n−jCn−jig(i)
=j=0∑n(−1)jCnjf(n−j)
=i=0∑n(−1)n−iCnif(i)
莫比乌斯反演
f(n)=d∣n∑g(d)
g(n)=d∣n∑μ(dn)f(d)
推导
- 注意到对于二项式反演,我们有一条式子∑i=0n(−1)iCni=[n=0]
- 类比莫比乌斯反演,我们也可以构造一个容斥系数,既然之前是求和的关系,现在我们要考虑因数的关系,所以自然就有了这个∑d∣nμ(d)=[n=1],后面我们会发现μ(d)的求法。
- 同上,我们也可以这样子推导:
g(n)=d∣n∑[dn=1]∗g(d)
=d∣n∑k∣dn∑μ(k)∗g(d)
=k∣n∑μ(k)∗d∣kn∑g(d)
=k∣n∑μ(k)f(kn)
=d∣n∑μ(dn)f(d)
- 妙啊,殊途同归。
- 实际上对于以下的莫比乌斯反演的变式也是一样的推法。
f(n)=n∣d∑g(d)
g(n)=n∣d∑μ(dn)f(d)
转移的矩阵表示
- 我们可以把转移看作矩阵乘法。
- 相当于是[1,n]矩阵乘上一个[n,n]的矩阵。
- 那么反演不就是矩阵求逆吗!
子集反演
一道简单题
- 给出a[i],b[i](0<=i<2n),求c[k]=∑i∣j=ka[i]∗b[j]。
FWT一波 。考虑比较容易计算c′[S]=∑T⊆Sc[T]
- c′[S]=∑i⊆Sa[i]∗∑j⊆Sb[j]。
- 然后再反演一波得到c???
- 实际上是c的高维前缀和为c’,倒着差分回去。。。
- 但是用这个推式子可不行,于是就有了下面的反演。
正经的式子
f(S)=T⊆S∑g(T)
g(S)=T⊆S∑(−1)∣S−T∣f(T)
推导
- 同上和上上,我们也可以来一个容斥的系数
T⊆S∑(−1)∣T∣=[S=0]
- 和二项式反演的意义是一样的,组合数就是在S中选一个|T|=i的方案。
- 然后再再再用相同的方法。
g(S)=T⊆S∑[S−T=0]g(T)
=T⊆S∑R⊆S−T∑(−1)∣R∣g(T)
=R⊆S∑(−1)∣R∣T⊆S−R∑g(T)
=R⊆S∑(−1)∣R∣f(S−R)
=T⊆S∑(−1)∣S−T∣f(T)
- 妙啊!
- 或者也可以这样:
f(S)=S⊆T∑g(T)
g(S)=S⊆T∑(−1)∣T−S∣f(T)
更神奇的多重子集反演
-
定义μ(S),如果S中有重复元素就是0,否则是(−1)∣S∣,因为没有重复元素,所以∑T⊆Sμ(T)=[S=0],跟上面是一样的。
-
就有f(S)=∑T⊆Sg(T),g(S)=∑T⊆Sμ(S−T)f(T)
-
如果将每一个元素看作质因数,那这不就是莫比乌斯反演吗!!!
卷积
- FFT也是反演???(雾)
- 其实反演就是将f分成两个独立的部分,例如[d∣gcd(i,j)]−>[d∣i][d∣j]
- 然后再把他们合起来。
总结
- 反演实际上就是一种容斥(所以上面相当于是在证明容斥为什么是对的)
- 对于推式子来说,反演有很大的作用。
- 但是还是要根据实际的题目而论。
- 之后做到好题再记录下来吧。