zoukankan      html  css  js  c++  java
  • 集合幂级数的$ln,exp$

    集合幂级数的(ln,exp)

    起始:求联通子图个数

    (F(x))为联通的生成子图个数的形式幂级数,可以简单求出(G(x))为生成子图个数的形式幂级数

    下可能略写(F(x))(F)

    不连通的子图可以通过联通子图做集合并运算得到,即构造卷积

    (egin{aligned} F imes G=sum_{S e empty}sum_{T e empty,Scap T=empty} [x^S]Fcdot [x^T]Gcdot x^{Scup T} end{aligned})

    显然满足关系式(egin{aligned} G=sum_{ige 1} frac{F^i}{i!}=e^{F}-1end{aligned})

    (F=ln (G+1))

    计算集合幂级数(ln)的方法似乎非常抽象

    方法是:

    1.类似子集卷积,把所有项按照占位数(集合包含元素个数)分开,记录在第二维

    2.求出( ext{FMT})

    3.对于集合幂级数每一位(现在是一个形式幂级数)求出其(ln)的前(n)

    4.求出( ext{IFMT})

    求出形式幂级数(ln)(n^2)方法是

    (F=ln (G+1))

    (F'=frac{G'}{G+1})

    (F'(G+1)=G')

    (egin{aligned}F'_i=G'_i-sum_{j=1}G_jF'_{i-j}end{aligned})

    类似的,可以计算集合幂级数的(exp),即由上面的(F)(G)

    (egin{aligned}G'_i=F'_i+sum_{j=1}G_jF'_{i-j}end{aligned})

    可能在子图计数题中出现

    LOJ6729

    LOJ6719

    LOJ6730

    下面是代码实现上的参考

    
    #define Mod1(x) ((x>=P)&&(x-=P))
    #define Mod2(x) ((x<0)&&(x+=P))
    #define rep(i,a,b) for(int i=a;i<=b;++i)
    
    int I[N];// 模逆元
    void FMT(int F[M][N],int f){
    	for(int i=1;i<m;i<<=1) for(int l=0;l<m;l+=i*2) 
    		for(int j=l;j<l+i;++j) if(f==1) rep(d,1,n) F[j+i][d]+=F[j][d],Mod1(F[j+i][d]);
    		else rep(d,1,n) F[j+i][d]-=F[j][d],Mod2(F[j+i][d]);
    }
    
    void Ln(int *a){
    	static int b[N];
    	rep(i,0,n-1) {
    		int t=0;
    		rep(j,0,i-1) t=(t+1ll*b[j]*a[i-j])%P;
    		b[i]=(1ll*a[i+1]*(i+1)-t+P)%P;
    	}
    	rep(i,1,n) a[i]=1ll*b[i-1]*I[i]%P;
    }
    void Exp(int *a){
    	static int b[N];
    	rep(i,0,n-1) b[i]=1ll*a[i+1]*(i+1)%P;
    	rep(i,0,n-1) {
    		int t=b[i];
    		rep(j,1,i) t=(t+1ll*a[j]*b[i-j])%P;
    		a[i+1]=1ll*t*I[i+1]%P;
    	}
    }
    
    void Ln(int F[M][N]) {
        FMT(F,1);
    	rep(i,1,m-1) Ln(F[i]);
    	FMT(F,-1);
    }
    void Exp(int F[M][N]) {
        FMT(F,1);
    	rep(i,1,m-1) Exp(F[i]);
    	FMT(F,-1);
    }
    
    
  • 相关阅读:
    二分练习题4 查找最接近的元素 题解
    二分练习题5 二分法求函数的零点 题解
    二分练习题3 查找小于x的最大元素 题解
    二分练习题2 查找大于等于x的最小元素 题解
    二分练习题1 查找元素 题解
    code forces 1176 D. Recover it!
    code forces 1173 B. Nauuo and Chess
    code forces 1173 C. Nauuo and Cards
    吴恩达深度学习课程笔记-15
    吴恩达深度学习课程笔记-14
  • 原文地址:https://www.cnblogs.com/chasedeath/p/13891189.html
Copyright © 2011-2022 走看看