标签:line 模板题 直接 通过 长度 play display idf isp
正常\(\text{DFT/IDFT}\)是构造一个特殊的点值式,即\(x_i=\omega_{n}^i\)
如果能通过题目条件构造出来这样的点值,就可以直接\(\text{DFT/IDFT}\)
那如果不能的话。。。。。
一个多项式\(F(x)\)我们求它在\(x_0,x_0,\cdots x_{m-1}\)上的点值
核心是分治+多项式取模,因此常数很大
对于当前分治区间\([l,r]\in[0,m-1]\)
需要快速构造一个长度为\(\frac{r-l+1}{2}\)的等价多项式进入分治区间
令\(G_{l,r}(x)=\prod_l^r(1-x_i)\)
由于\(G_{l,r(x_l)}=\cdots=G_{l,r}(x_r)=0\)
所以可以将\(F(x)\)对于\(G_{l,mid}(x)\)和\(G_{mid+1,r}(x)\)分别取模之后得到两个等价式
递归到\([l=r]\)时,\(F(x)\)只剩下常数项
需要被访问的\(G(x)\)可以预先跑一遍分治NTT求出
那么复杂度就是\(O(n\log ^2n)\)
对于点对\((x_i,y_i)\)
多项式拉格朗日插值的式子是
那么需要快速求出\(\prod \frac{1}{x_i-x_j}\)
构造多项式\(G(x)=\prod (x-x_i)\)
那么\(\prod (x_i-x_j)=\frac{G}{x-x_i}(x_i)\)
由于\(G(x),x-x_i\)在\(x_i\)上的点值均为\(0\)
我们要求的多项式就是\(\begin{aligned} \prod_{i\ne j} (x_i-x_j) \end{aligned}=\frac{G(x)}{x-x_i}\)
即求出\(\frac{G}{x-x_i}(x_i)\)
分母分子均为\(0\),所以带入洛必达法则\(\begin{aligned}\frac{G}{x-x_i}(x_i)=\frac{G‘}{(x-x_i)‘}(x_i)=G‘(x_i)\end{aligned}\)
那么求出\(G‘(x)\),然后多项式多点求值即可
剩下那一部分的答案,可以简单地分治合并上来,\([l=r]\)时,多项式是一个常数
合并上来时
\([l,mid]\)的答案补上\(\prod_{mid+1}^r (x-x_i)\)
\([mid+1,r]\)的答案补上\(\prod_{l}^{mid} (x-x_i)\)
即复杂度为\(O(n\log ^2n)\)
垃圾模板题卡常
标签:line 模板题 直接 通过 长度 play display idf isp
原文地址:https://www.cnblogs.com/chasedeath/p/13073178.html