多项式
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=0n∑j=0iS(i,j)∗2j∗j!ans=∑i=0n∑j=0iS(i,j)∗2j∗j!
注意到第二类斯特林数的意义,将i个数分成j个集合的方案数,也就是说,当i<ji<j时,结果会为0,所以j的枚举上界可以直接改为n。
ans=∑i=0n∑j=0nS(i,j)∗2j∗j!ans=∑i=0n∑j=0nS(i,j)∗2j∗j!
代入第二类斯特林数计算公式
ans=∑i=0n∑j=0n2j∗∑k=0j(−1)k∗Ckj∗(j−k)ians=∑i=0n∑j=0n2j∗∑k=0j(−1)k∗Cjk∗(j−k)i
拆一下组合数
ans=∑i=0n∑j=0nj!∗2j∗∑k=0j(−1)kk!∗(j−k)i(j−k)!ans=∑i=0n∑j=0nj!∗2j∗∑k=0j(−1)kk!∗(j−k)i(j−k)!
可以把第一个sigma移到最后
ans=∑j=0nj!∗2j∗∑k=0j(−1)kk!∗∑ni=0(j−k)i(j−k)!
任意模数fft