# 集合幂级数的ln和exp运算及组合意义

## 子集卷积

$f,g,h$为集合幂级数

$h_S=\sum_{L}\sum_{R} f_L g_R [L \cap R=\emptyset][L \cup R=S]$

$H_{k,S}=\sum_i\sum_j\sum_L\sum_R[i+j=k][L \cup R=S]F_{i,L} G_{j,R}$

## 集合幂级数exp

$G=\exp F -1$

$g_n=\frac{1}{n} \sum_{i=0}^{n-1}if_ig_{n-i}$

$\frac{g_n}{n!}=\sum_{i=0}^{n-1} \frac{i}{n} \frac{f_i}{i!} \frac{g_{n-i}}{(n-i)!}$

$g_n=\sum_{i=0}^{n-1} \frac{i}{n}\binom{n}{i}f_i g_{n-i}=\sum_{i=0}^{n-1} \binom{n-1}{i-1}f_i g_{n-i}$

void exp(int *f,int *g,int n){
static int F[maxlogn+5][maxn+5],G[maxlogn+5][maxn+5];
for(int i=0;i<(1<<n);i++) for(int j=0;j<=n;j++) F[j][i]=G[j][i]=0;
for(int i=0;i<(1<<n);i++) F[cnt[i]][i]=f[i];
for(int i=0;i<=n;i++) FMT(F[i],n,1);
G[0][0]=1;
FMT(G[0],n,1);
for(int s=0;s<(1<<n);s++){
for(int i=1;i<=n;i++){
G[i][s]=1ll*G[i][s]*invi[i]%mod;
}
}
for(int i=0;i<=n;i++) FMT(G[i],n,-1);
for(int i=0;i<(1<<n);i++) g[i]=G[cnt[i]][i];
}


## 集合幂级数ln

$g_n=\frac{1}{n} \sum_{i=0}^{n-1}if_ig_{n-i}$

$f_n=g_n-\frac{1}{n}\sum_{i=1}^{n-1}if_ig_{n-i}$

$g_n=f_n-\frac{1}{n}\sum_{i=1}^{n-1}ig_if_{n-i}$

void ln(int *f,int *g,int n){
static int F[maxlogn+5][maxn+5],G[maxlogn+5][maxn+5];
for(int i=0;i<(1<<n);i++) for(int j=0;j<=n;j++) F[j][i]=G[j][i]=0;
for(int i=0;i<(1<<n);i++) F[cnt[i]][i]=f[i];
for(int i=0;i<=n;i++) FMT(F[i],n,1);
G[0][0]=1;
FMT(G[0],n,1);
for(int s=0;s<(1<<n);s++){
for(int i=1;i<=n;i++){
G[i][s]=decm(F[i][s],1ll*G[i][s]*invi[i]%mod)%mod;
}
}
for(int i=0;i<=n;i++) FMT(G[i],n,-1);
for(int i=0;i<(1<<n);i++) g[i]=G[cnt[i]][i];
}


## k-exp

$G=\sum_{i=1}^k \frac{F^i}{i!}$

$ng_n=\sum_{i=0}^{n-1}(n-i)f_{n-i}(g_i-h_i)$

posted @ 2021-03-14 12:01  birchtree  阅读(725)  评论(0编辑  收藏  举报