[CCPC2020网络赛]1013-Residual Polynomial

给定初始多项式\(f_1(x)=\sum_{i=0}^na_ix^i\)的系数\(a_0\dots a_n\),和\(b_2\dots b_n\)\(c_2\dots c_n\),后面\(f_i(x)=b_if_{i-1}'(x)+c_if_{i-1}(x)\),求\(f(n)\)

系数在mod 998244353下

解:观察发现\(f_n(x)\)的系数\(a'_kk!=\sum_{i=k}^na_ii!s_{i-k}\)其中我们定义\(s_{j}\)\(b_2...b_n\)中选择\(j\)个,其余的全部选对应的\(c\),把它们相乘,所有情况数之和

发现是个卷积的形式(需要把\(s\)数组翻转一下,然后再搞搞下标),然后搞一波ntt就出来了。

\(s\)数组如果直接做是\(2^n\)的,可以dp是\(n^2\)的也不行,我们可以利用分治,当\(n\)小时候为了减小常数可以\(O(n^2)\)但是\(n\)大的时候就分治,然后通过多项式乘法合并答案,这样子是\(O(n\log^2n)\)的。

总的复杂度是\(O(n\log^2n)\)

posted @ 2020-09-22 19:23  ghj1222  阅读(353)  评论(0编辑  收藏  举报