Do Use FFT

题意

给定序列({A},{B},{C}),求序列({ans_i}),其中
(ans_ksum_{1 leq i leq N} left( C_i imes prod_{1 leq j leq k} (A_i+B_j) ight))

做法

(T(x)=sumlimits_{i=1}^Nfrac{C_i}{1-A_ix})
(P_{[L,R]}=prodlimits_{i=L}^R (x+B_i))

(ans_k=[x^0]T(x)P_{[1,k]}(1/x))

考虑求(T(x)=frac{sumlimits_{i=1}^N C_iprodlimits_{j eq i}(1-A_jx)}{prodlimits_{i=1}^n(1-A_ix)}),求(G(x)sumlimits_{i=1}^N C_iprodlimits_{j eq i}(1-A_jx))

分治fft,令(G_{[L,R]}(x)=sumlimits_{i=L}^R C_iprodlimits_{j eq i,jin[L,R]}(1-A_jx)),令(H_{[L,R]}(x)=prodlimits_{i=L}^R (1-A_ix))
(G_{[L,R]}(x)=G_{[L,mid]}(x)H_{(mid,R]}(x)+H_{[l,mid]}(x)G_{(mid,R]}(x))

考虑求([x^0]T(x)P_{[1,k]}(1/x))
(Solve(1,n))传入(T(x))
考虑得到(Solve(l,r)),向(Solve(l,mid))传入(Solve(l,r));向(Solve(mid+1,r))传入(Solve(l,r)cdot P_{[l,mid]}(1/x))
由于最后我们仅需得到([x^0])的系数,那么(Solve(l,r))保留([x^0],[x^1],cdots,[x^{r-l+1}])项系数即可。

总复杂度为(O(nlog^2n))

原文地址:https://www.cnblogs.com/Grice/p/14499038.html