多项式

BZOJ 3456: 城市规划:

暴力就不说了

f[i]=2^(C(i,2))-sigma{j=i-1,C(i,j)*f[j]*2^(C(i-j,2))};

首先由于2^C(i-j,2))是常数项,所以是可以分治fft的

将右边的移项过来,sigma{j=i,C(i,j)*f[j]*2^(C(i-j,2))}=2^C(i,2)

会发现这个C(i,j)使得他不满足卷积形式了,那么我们就将他拆开

simga{j=i,i!*f[j]/j!*2^C(i-j,2)/(i-j)!}=2*C(i,2)

我们会发现f[j]/j!是卷积的一项,2^C(i-j,2)/(i-j)!是卷积的一项,把i!除到右边,2*C(i,2)/i!也是卷积的一项

那么可以得到X*Y=Z

其中要求的是X,X=Z*Y(-1) 使用多项式求逆

代码:

bzoj3625小朋友和二叉树

我们考虑dp,f[i]=f[j]*g[k]*f[i-j-k] 其中g[k]的意思表示是否有权值为k的这种树

F=F^2*G 但是我们会发现,当i=0时,f[i]=1,不满足这个式子,所以F=F^2*G+1

一元二次方程,解得F=1+sqrt(1-4G)/2G 多项式求逆+多项式开根

[bzoj4555][TJOI&HEOI2016]求和

https://blog.csdn.net/werkeytom_ftd/article/details/51909966

ans=i=0nj=0iS(i,j)2jj!ans=∑i=0n∑j=0iS(i,j)∗2j∗j!


注意到第二类斯特林数的意义,将i个数分成j个集合的方案数,也就是说,当i<ji<j时,结果会为0,所以j的枚举上界可以直接改为n。 

 
ans=i=0nj=0nS(i,j)2jj!ans=∑i=0n∑j=0nS(i,j)∗2j∗j!


代入第二类斯特林数计算公式 

 
ans=i=0nj=0n2jk=0j(1)kCkj(jk)ians=∑i=0n∑j=0n2j∗∑k=0j(−1)k∗Cjk∗(j−k)i


拆一下组合数 

 
ans=i=0nj=0nj!2jk=0j(1)kk!(jk)i(jk)!ans=∑i=0n∑j=0nj!∗2j∗∑k=0j(−1)kk!∗(j−k)i(j−k)!


可以把第一个sigma移到最后 

 
ans=j=0nj!2jk=0j(1)kk!ni=0(jk)i(jk)!

任意模数fft

posted @ 2018-08-04 23:50  尹吴潇  阅读(165)  评论(0编辑  收藏  举报