Binomial_Inversion

一、反演简介

反演的本质:两个数列的双向求和关系。

最常见的反演,比如前缀和与差分。

定义关系矩阵 A,则 fn=i=0An,igi

F=G×A

反过来我们也有 G=A1×F

我们有如下结论:

定理:两个互为反演关系的矩阵互逆。


一对互逆矩阵转置后仍然互逆,即:

A×B=IAT×BT=I

一对互逆矩阵分别数乘 c(c0) 后仍然互逆,即:

A×B=I(cA)×(cB)=I


反演中 -1 的幂可以移动:

t=0(1)ntAn,tBt,m=[n=m]t=0(1)tAn,t(1)mBt,m=[n=m]

我们想办法证明后面的等式能推出前面的等式。

将后面的等式两边乘上 (1)nm

t=0(1)n+tAn,tBt,m=[n=m](1)nm

很显然 n+tnt 奇偶性相同:

t=0(1)ntAn,tBt,m=[n=m](1)nm

分类讨论:

  • 如果 n=m,则等式的右边为 1。

  • 如果 nm,则等式的右边为 0。

说明 [n=m](1)nm=[n=m],即:

t=0(1)ntAn,tBt,m=[n=m]

即我们从右边的等式推到了左边的等式。

想从左边推到右边的话把这个证明过程倒过来走一遍就行了。


对于多维反演,以二维情况为例,假设两维的关系矩阵分别为 A,B

fn,m=i=0j=0An,iBm,jgi,jgn,m=i=0j=0An,i1Bm,j1gi,j

二、二项式相关结论

(nm)=n!m!(nm)!=nmm!

  1. 对称:(nm)=(nnm)

  2. 吸收与释放:(nm)=nm(n1m1)

  3. 二项式定理:

    (1+x)a=i=0(ai)xi

  4. 递推公式(杨辉三角):

    (nm)=(n1m1)+(n1m)

  5. 平行求和:

    i=0n(r+ii)=(r+n+1n)

    证明:前两项之和为

    (r0)+(r+11)=(r+10)+(r+11)=(r+21)

    然后与 (r+22) 求和:

    (r+21)+(r+22)=(r+32)

    以此类推,综上得到结论。

  6. 上指标求和:

    i=0n(im)=(n+1m+1)

    证明:(mm)=(m+1m+1),与 (m+1m) 相加得到 (m+2m+1)

    剩下的递推与上个证明类似,不作赘述。

三、二项式反演

  1. 常见形式及其证明:

    二项式反演基本形式:

    fn=i=0n(1)i(ni)gign=i=0n(1)i(ni)fi

    证明该结论即证明 An,i=(1)i(ni) 这个矩阵是自逆的。

    证明:

    (A×A)d,t=i=1Ad,iAi,t=i=td(1)i(di)(1)t(it)=(1)ti=td(1)id!i!i!(di)!t!(it)!=(1)ti=td(1)id!(di)!t!(it)!=(1)ti=td(1)id!(dt)!t!(dt)!(di)!(it)!=(1)ti=td(1)id!(dt)!t!(dt)!(di)!((dt)(di))!=(1)t(dt)i=td(1)i(dtdi)=(1)t(dt)(1)ti=0dt(1)i+t(dtdti)=(1)t(dt)(1)ti=0dt(1)i(dti)=(1)t(dt)(1)t(11)dt=[d=t]

    于是 A×A=I,反演成立。


    二项式反演的另外一种形式:

    fn=i=0n(ni)gign=i=0n(1)ni(ni)fi

    就是利用我们第一部分讲的那个 -1 的幂可以移动的结论,证明这个形式和我们刚才讲的基本形式是等价的。

    如果想证明的话,当然可以先证明这个和上面的基本形式等价,然后再证明基本形式正确,从而证明这个形式正确。

    但实际上在这种形式下,我们有更好的证明方法。

    证明:

    fn=i=0n(ni)gi

    等价于:

    fnn!=i=0n1(ni)!gii!

    这实际上是一个 EGF 的卷积形式:

    F^=G^exF^ex=G^

    再换成级数的形式:

    gnn!=i=0n(1)ni(ni)!fii!

    该形式等价于:

    gn=i=0n(1)ni(ni)fi

    因为上述证明中我们使用的都是等价,因此所有的推导都可以逆向进行,即两个等式等价。


    另一种形式:

    fn=i=n(in)gign=i=n(1)in(in)fi

    实际上就是将 EGF 证明的那种形式的矩阵进行转置后得到的。


    另一种形式:

    fn=i=n(1)i(in)gign=i=n(1)i(in)fi

    将上面的形式移动 -1 的幂次即可。

  2. 错排引入:

    求错位排列数 dn

    我知道你会 dn=(n1)(dn1+dn2) 然后矩阵加速,跑得飞快。

    但我现在要讲一下这个东西的通项公式是如何使用二项式反演得到的。

    每次钦定 k 个位置,它们严格错排,其余位置不动。其中 k0,1,2,,n

    显然这些方案可以不重不漏的覆盖所有排列的方案:

    n!=i=0n(ni)di

    二项式反演:

    dn=i=0n(1)ni(ni)i!=n!i=0n(1)ni(ni)!=n!i=0n(1)ii!

    于是我们得到了 dn 的通项,每项可以 O(n) 计算。

    如果想求出前 n 项的具体值的话,根据 G^=F^ex 卷积,直接 NTT 就是 O(nlogn) 的,和矩阵乘法没差。

    但是单次求还是矩阵乘法更胜一筹。

    这里拿这个问题不过就是简单应用一下二项式反演。。。

  3. 钦定法:

    还是错排问题。

    我们称 pi=ii 为不动点。

    gn,k 为恰有 k 个不动点的长度为 n 的排列个数。

    fn,k 为有 k 个及以上不动点的长度为 n 的排列个数。

    那么我们就有:

    fn,k=m=kn(mk)gn,m

    然后二项式反演:

    gn,m=k=mn(1)km(km)fn,k

    很容易知道:

    fn,k=(nk)(nk)!=n!k!

    代入 gn,m

    gn,m=gn,m=k=mn(1)km(km)n!k!

    我们要求的就是:

    dn=gn,0=n!k=0n(1)kk!

    和上面我们求出的通项是一样的。


例题一:P4491 [HAOI2018]染色

  • 差卷积的使用,就是调整序列标号之后再做加法卷积

例题二:P6478 [NOI Online #2 提高组] 游戏

  • 先 DP 后反演

例题三:CF997C Sky Full of Stars

  • 二维二项式反演
  • 反演过后使用二项式定理化简

练习:CF1228E Another Filling the Grid

  • 同样是二维二项式反演
  • 例题的弱化

例题四:P5339 [TJOI2019]唱、跳、rap和篮球

  • 特殊的钦定方法
  • 以及 EGF 计算

练习题 ? 组:

  1. P5400 [CTS2019] 随机立方体

  2. P5401 [CTS2019] 珍珠