拉格朗日反演

小记一下拉格朗日反演是个什么东西。如果您知道这是个什么东西那可以走了。

复合和复合逆

定义两个幂级数的复合为:

\[F(G(x))=\sum_{i=0}f_iG(x)^i \]

就是把 \(x\) 换成里边的函数。

定义幂级数的复合逆:若幂级数 \(F(x),G(x)\) 满足 \(F(G(x))=x\),则它们互为复合逆。容易发现 \(G(F(x))=x\)

当然我们通常不关心这俩玩意怎么算。

形式洛朗级数

定义数列 \({a_n}_{n\ge n_0}\) 的形式洛朗级数为:

\[F(x)=x^{n_0}\sum_{n=0}a_{n+n_0}x^n \]

容易得到它的幂

\[F^k(x)=x^{n_0k}\left(\sum_{n=0}a_{n+n_0}x^n\right)^k \]

有引理(形式留数):对于幂级数 \(F(x)\) 满足 \(n_0=1\),那么对于 \(\forall k\in \mathbb{Z}\),有:

\[[x^{-1}]F'(x)F^k(x)=[k=-1] \]

证明:分情况。

  1. \(k\neq -1\):有 \(F'(x)F^k(x)=\left(\dfrac 1{k+1}F^{k+1}(x)\right)'\),而 \((x^0)'=0x^{-1}\),因此 \(-1\) 次项为 \(0\)
  2. \(k=-q\):套一下。

\[\begin{aligned} \frac{F'(x)}{F(x)}=&\frac{\sum_{i=0}(i+1)f_{i+1}x^i}{\sum_{i=1}f_ix^i}\\ =&x^{-1}\frac{\sum_{i=0}(i+1)f_{i+1}x^i}{\sum_{i=0}f_{i+1}x^i} \end{aligned} \]

容易发现 \(-1\) 次项系数为 \(1\)

拉格朗日反演

对于幂级数 \(F(x)\) 满足 \(n_0=1\) 与其复合逆 \(G(x)\),那么对于 \(n,k\in \mathbb{Z}\),有

\[n[x^n]F(x)^k=k[x^{-k}]G(x)^{-n} \]

非常对称。非常优美。证一下。

\[\begin{aligned} F(G(x))^k=&x^k\\ (F^k)'GG'=&kx^{k-1}\\ \sum_{i=0}i([x^i]F^k(x))G^{i-1}G'=&kx^{k-1}\\ \sum_{i=0}i([x^i]F^k(x))G^{i-1-n}G'=&kx^{k-1}G^{-n}\\ [x^{-1}]\sum_{i=0}i([x^i]F^k(x))G^{i-1-n}G'=&[x^{-1}]kx^{k-1}G^{-n}\\ \end{aligned} \]

使用上边提到的形式留数定义:

\[\begin{aligned} [x^{-1}]\sum_{i=0}i([x^i]F^k(x))G^{i-1-n}G'=&[x^{-1}]kx^{k-1}G^{-n}\\ \sum_{i=0}i([x^i]F^k(x))[i-1-n=-1]=&k[x^{-k}]G^{-n}\\ n[x^n]F^k=&k[x^{-k}]G^{-n} \end{aligned} \]

事实上我们还有扩展拉格朗日反演

\[[x^n]H(F)=\frac 1n[x^{n-1}]H'\left(\frac xG\right)^n \]

一个例题。

P7592 数树(2021 CoE-II E)

很难想象为什么这个东西是紫的。

首先这玩意显然是个假期望。看见一大堆东西不知道该说什么。但是仍然尝试构造二元生成函数

\[F(x,y)=\sum_{i=0}\sum_{j=0}f_{i,j}x^iy^j \]

其中 \(f_{i,j}\)\(i\) 个节点权值为 \(j\) 的树的个数。根据题意小列个方程:

\[F=x(1+y^aF^{k_1}+y^bF^{k_2}) \]

长得就很拉格朗日反演。那么得到复合逆

\[G=\frac x{1+y^ax^{k_1}+y^bx^{k_2}} \]

套拉格朗日反演:

\[\begin{aligned} [x^n]F(x,y)=\frac 1n[x^{n-1}]\left(\frac xG\right)^n\\ =\frac 1n[x^{n-1}](1+y^ax^{k_1}+y^bx^{k_2})^n \end{aligned} \]

分别看分子分母。

分母:显然就是 \(F(x,1)\)。那代进去:(我发现我二项式定理也开始不写组合数了)

\[\begin{aligned} &\frac 1n[x^{n-1}](1+x^{k_1}+x^{k_2})^n\\ =&\frac 1n[x^{n-1}]\sum_{i=0}^n\binom nix^{ik_1}\sum_{j=0}^{n-i}\binom{n-i}jx^{jk_2}\\ =&\frac 1n\sum_{i=0}^b\binom ni\sum_{j=0}^{n-i}\binom{n-i}j[ik_1+jk_2=n-1] \end{aligned} \]

那枚举一个 \(i\)\(j\) 是固定的,可以线性。

分子:算上权值就是对 \(y\) 求偏导。那么答案就是

\[\begin{aligned} \frac 1n[x^{n-1}]n(1+x^{k_1}+x^{k_2})^{n-1}(ax^{k-1}+bx^{k-2}) \end{aligned} \]

自己拆去。(逐渐暴躁)

#include <cstdio>
#include <cstring>
#include <algorithm>
#include <iostream>
using namespace std;
const int mod=998244353;
int k1,k2,n,a,b;
int jc[10000010],inv[10000010];
int qpow(int a,int b){
    int ans=1;
    while(b){
        if(b&1)ans=1ll*ans*a%mod;
        a=1ll*a*a%mod;
        b>>=1;
    }
    return ans;
}
int C(int n,int m){
    return 1ll*jc[n]*inv[m]%mod*inv[n-m]%mod;
}
int main(){
    scanf("%d%d%d%d%d",&k1,&k2,&n,&a,&b);jc[0]=inv[0]=1;
    for(int i=1;i<=n;i++)jc[i]=1ll*jc[i-1]*i%mod;
    inv[n]=qpow(jc[n],mod-2);
    for(int i=n-1;i>=1;i--)inv[i]=1ll*inv[i+1]*(i+1)%mod;
    int down=0;
    for(int i=0;i*k1<=n-1;i++){
        if((n-1-i*k1)%k2==0)down=(down+1ll*C(n,i)*C(n-i,(n-1-i*k1)/k2))%mod;
    }
    down=1ll*down*qpow(n,mod-2)%mod;
    int ret=0,up=0;
    for(int i=0;i*k1<=n-1-k1;i++){
        if((n-1-(i+1)*k1)%k2==0)ret=(ret+1ll*C(n-1,i)*C(n-1-i,(n-1-(i+1)*k1)/k2))%mod;
    }
    up=(up+1ll*ret*a)%mod;ret=0;
    for(int i=0;i*k1<=n-1-k2;i++){
        if((n-1-k2-i*k1)%k2==0)ret=(ret+1ll*C(n-1,i)*C(n-1-i,(n-1-k2-i*k1)/k2))%mod;
    }
    up=(up+1ll*ret*b)%mod;
    up=1ll*up*qpow(down,mod-2)%mod;
    printf("%d\n",up);
    return 0;
}

另类拉格朗日反演

对于 \(n=0,k<0\) 等情况,拉格朗日反演并不一定起作用。EI 提出另类拉格朗日反演:在和上面同样的条件下:

\[[x^n]F^k=[x^{-k-1}]G'G^{-n-1} \]

证明:

\[\begin{aligned} F(G(x))^k=&x^k\\ \sum_{i=0}([x^i]F^k(x))G^i=&x^k\\ \sum_{i=0}([x^i]F^k(x))G'G^{i-n-1}=&x^kG'G^{-n-1}\\ [x^{-1}]\sum_{i=0}([x^i]F^k(x))G'G^{i-n-1}=&[x^{-1}]x^kG'G^{-n-1} \end{aligned} \]

同样套用形式留数即可得到结论:

\[[x^n]F^k=[x^{-k-1}]G'G^{-n-1} \]

另类拉格朗日反演同样有复合形式:

\[[x^n]H(F)=[x^n]H\left(\frac xG\right)^{n+1}G' \]

应用:小孩召开法。写过题解。

事实上有所谓“多元拉格朗日反演”,然而目前出现的题都可以使用更加初等的解法解决,因此在此不表。

posted @ 2023-02-16 17:28  gtm1514  阅读(179)  评论(0编辑  收藏  举报