题解:P13909 「TFXOI Round 3」就此别过
yingkeqian9217 · · 题解
看不懂官方题解。
显然二项式反演,定义
枚举多余断点,直接容斥易得,这一步可以卷积优化,比较平凡不再赘述。
考虑如何得到
这里要特判
inline void solve(){
cin>>n;
for(int i=1;i<=n;i++) bas[i]=reduce(bas[i-1]<<1);
for(int i=0;i<n;i++) a[i]=(i&1?Mod-ifac[i]:ifac[i])*fac[n-1-i]%Mod;
for(int i=0;i<n;i++) b[i]=ifac[i+1]*ifac[i]%Mod*bas[i+1]%Mod;
NTT::polymul(n-1,a,b,f);
for(int i=0;i<n;i++) f[i]=f[i]*fac[i+1]%Mod*ifac[n-i-1]%Mod*fac[i+1]%Mod;
f[n-1]=(f[n-1]+(n&1?Mod-1:1)*fac[n])%Mod;
for(int i=0;i<n;i++) f[i]=(i&1?Mod-f[i]:f[i])*fac[n-1-i]%Mod;
for(int i=0;i<n;i++) a[i]=ifac[i];
NTT::polymul(n-1,f,a,g);
for(int i=0;i<n;i++) cout<<(i&1?Mod-g[i]:g[i])*ifac[n-1-i]%Mod<<'\n';
}