问一些奇怪的问题

P6097 【模板】子集卷积

```cpp #include<bits/stdc++.h> using namespace std; typedef long long ll; typedef pair<int,int> PII; const int maxn=1048576,mod=1000000009; #define MP make_pair #define lson o<<1,l,mid #define rson o<<1|1,mid+1,r #define FOR(i,a,b) for(int i=(a);i<=(b);i++) #define ROF(i,a,b) for(int i=(a);i>=(b);i--) #define MEM(x,v) memset(x,v,sizeof(x)) inline int read(){ int x=0,f=0;char ch=getchar(); while(ch<'0' || ch>'9') f|=ch=='-',ch=getchar(); while(ch>='0' && ch<='9') x=x*10+ch-'0',ch=getchar(); return f?-x:x; } int n,lim,sz[maxn],f[21][maxn],g[21][maxn],h[21][maxn],s[21][maxn],sl[21]; inline void dec(int &x){x+=x>>31?mod:0;} void FMT(int *A,int lwr){ for(int i=1;i<lim;i<<=1){ int x=max(0,lwr-sz[i-1]),uprx=sl[x]; FOR(j_,0,uprx-1){ int j=(i<<1)*s[x][j_]; if(j>=lim) break; int y=max(0,lwr-sz[j]),upry=sl[y]; FOR(k_,0,upry-1){ int k=s[y][k_]; if(k>=i) break; dec(A[i+j+k]+=A[j+k]-mod); } } } } void IFMT(int *A,int lwr){ for(int i=1;i<lim;i<<=1){ int x=max(0,lwr-sz[i-1]),uprx=sl[x]; FOR(j_,0,uprx-1){ int j=(i<<1)*s[x][j_]; if(j>=lim) break; int y=max(0,lwr-sz[j]),upry=sl[y]; FOR(k_,0,upry-1){ int k=s[y][k_]; if(k>=i) break; dec(A[i+j+k]-=A[j+k]); } } } } int main(){ n=read();lim=1<<n; FOR(i,1,lim-1) sz[i]=sz[i>>1]+(i&1); FOR(i,0,lim-1) f[sz[i]][i]=read(); FOR(i,0,lim-1) g[sz[i]][i]=read(); FOR(i,0,n) FOR(j,0,lim-1) if(sz[j]>=i) s[i][sl[i]++]=j; FOR(i,0,n){ FMT(f[i],i);FMT(g[i],i); FOR(j,0,i){ int x=max(j,i-j),uprx=sl[x]; FOR(k,0,uprx-1) h[i][s[x][k]]=(h[i][s[x][k]]+1ll*f[j][s[x][k]]*g[i-j][s[x][k]])%mod; } IFMT(h[i],(i+1)>>1); } FOR(i,0,lim-1) printf("%d ",h[sz[i]][i]); } ```
by AThousandSuns @ 2020-02-16 18:12:46


这是新题?
by 诱宵美⑨ @ 2020-02-16 18:13:07


Fast Mobius Transform! ~~但是据说这玩意可以被 FWT 完全代替吧~~
by Hydrate @ 2020-02-16 18:14:52


@[北辰yama](/user/244079) 我一般 FMT 是用长得像 FWT 的方式实现的,而且实测常数能省掉不少。
by AThousandSuns @ 2020-02-16 18:16:44


理论上好像没啥问题,要不待会我自己写一下?
by 诱宵美⑨ @ 2020-02-16 18:17:51


@[AThousandSuns](/user/72118) 这您得问编译器。估计是您在里面加了 if 以后编译器没法优化了?
by mrsrz @ 2020-02-16 18:21:09


/jk
by AThousandSuns @ 2020-02-16 18:22:15


@[AThousandSuns](/user/72118) 其实“直接自然溢出啥事没有”是我喷这题出题人给它加了个取模…………
by mrsrz @ 2020-02-16 18:23:29


然后被 lxl 拿去当题目名了/px
by mrsrz @ 2020-02-16 18:23:43


膜一下奇怪的ntf
by 1saunoya @ 2020-02-16 18:25:52


| 下一页