學習筆記 多項式

2022-03-06 12:53:20 字數 2206 閱讀 5580

給你n個點\((x_1,y_1),(x_2,y_2),...\)

求乙個n-1次的多項式\(f(x)\),求\(f(k)\)

我們可以認為\(f(x)=f_1(x)+f_2(x)+..+f_(x)\)

其中\(f_i(x_i)=y_i\) 且 \(\forall j\neq i,f_i(x_j)=0\)

也就是說乙個點\(x_i\)只在乙個函式中為\(y_i\),其他函式中均為0

換言之就是把多條曲線合在一起(跟crt的構造思想一致)

然後我們很容易構造以上式子

\[f(x)=\sum_^y_i\pi_\frac

\]\[f(x)=\sum_^y_i\pi_\frac\]令

\[g(x)=\pi_^x-x_i

\]\[h(i)=\fracx_i-x_j}

\]那麼

\[f(x)=g(x)\sum_^\frac

\]那麼如果我們要修改單點的橫座標,就可以單獨修改\(h(i),g(x)\)來解決,複雜度為\(o(n)\)

各種插值法的介紹

自為風月馬前卒的fft講解

對於ntt,只是把n次複數單位根換成了原根

ntt素數表

miskcoo

泰勒函式的解釋1

泰勒函式的解釋2

「使用泰勒公式進行估算時,在不同點展開的區別和意義是啥?」的回答

miskcoo's

假設\(a(x)\)已知

求\(g(b(x))\equiv 0 \mod x^n\)

使用倍增法,設\(\frac\)項多項式\(b_0(x)\)滿足\(g(b_0(x))\equiv 0 \mod x^}\)

泰勒展開一波

\[g(b(x))\equiv \frac+\frac(b_0(x))}(b(x)-b_0(x))+\frac(b_0(x))}(b(x)-b_0(x))^2··· (\mod x^n)

\]可知\(b(x)\)與\(b_0(x)\)前\(\frac\)項相同,所以\((b(x)-b_0(x))^k(k\ge 2)\)在模\(x^n\)意義下為0

所以\[b(x)\equiv b_0(x)-\frac(b_0)}

\]miskcoo

假設我們已經推完了\(a(x)b_0(x)\equiv 1\mod x^\)

要求\(a(x)b(x)\equiv 1\mod x^\)中的\(b(x)\)

\[\begina(x)(b(x)-b_0(x))=0 \mod x^\\b(x)-b_0(x)\equiv0 \mod x^n\\b^2(x)-2b(x)b_0(x)+b_0^2(x)\equiv 0 \mod x^\\b(x)-2b_0(x)+a(x)b_0^2(x)\equiv 0 \mod x^\\b(x)\equiv b_0(x)(2-a(x)b_0(x)) \mod x^\end

\]ln

\[\beginb(x)&\equiv\ln a(x) \mod x^n\\&\equiv\int\frac(x)}dx \mod x^n\end

\]exp

\[\beginb(x)\equiv e^ \mod x^n \\ln b(x)-a(x)\equiv 0 \mod x^n \end

\]設\(g(b(x))=\ln b(x)-a(x)\) ,則\(g^(b(x))=\frac\),套牛頓迭代公式

\[\beginb(x)&\equiv b_0(x)-\frac}\\&\equiv b_0(x)(1-\ln b_0(x)+a(x))\end

\]牛頓迭代得

\[b(x)=b_0(x)-\frac

\]\[\beginb(x)&\equiv a^k(x)\\&\equiv e^\end

\]時間複雜度\(o(nlogn)\)然而常數巨大

**

int qpow(int x,int b)

return ans;

}void ntt(int *a,int len,int type)

void get_inv(int *f,int n,int *b)

get_inv(f,(n+1)>>1,b);

init(n);

for(int i=0;i=1;i--)b[i]=1ll*b[i-1]*qpow(i,mod-2)%mod;//mis

b[0]=0;

}void get_exp(int *f,int deg,int *b)

學習筆記 多項式

把一直學不懂的各種大常數 o n log n 的神奇多項式演算法總結一下 證明什麼的比較簡略 還有我今天才知道預處理一下單位根會快很多 qwq 最沒用的乙個 首先我們能寫出乙個 o n 2 的暴力 這個你都不會就可以退役了 某位dalao題解中的 要確定乙個多項式,我們發現只要代 f 1 f 2 f...

多項式學習筆記

太菜了並不是很理解多項式,簡單記錄一下,緩慢更新吧 有問題問快速航 首先我們要求的柿子長這樣 c k sum a i b j 大概思路 先把兩個多項式轉成點值 dft 再把兩個多項式的點值乘在一起,把新的點值轉成多項式 idft 即可 首先要了解複數的運算 a b i c d i a c b d i...

多項式 學習筆記

已知兩個多項式的係數表示式,求其乘積的係數表示式。c n sum limits a ib 係數表示式逐項相乘,複雜度 o n 2 而點值表示式相乘複雜度為 o n 因此我們要快速地將兩個多項式轉化為點值表示式,完成點值表示式的乘法,然後轉為係數表示式得到結果。表示式轉換的過程分別是離散傅利葉變換 d...