[Notes][多項式]雜記 · 多項式演算法—多項式求逆 多項式取模 多項式開根…
多項式
由若干個單項式相加組成的代數式叫做多項式
形如:,
稱為的度,是最高次項的次數。
生成函式
形如
生成函式又稱母函式,往往和多項式演算法聯絡起來起到優化轉移的作用
多項式演算法
加減法
多項式加減法比較簡單
若,
則
程式碼實現也比較簡單
乘法
多項式乘法是所有多項式演算法的基礎,也是生成函式的卷積運算
若,
則
樸素的多項式乘法是的,但FFT(快速傅立葉變換)運用複數根的特性可以在的複雜度內實現多項式的係數表達和點值表達的轉化,運用點值表達實現的相乘,總複雜度就是,但是因為常數過大,往往小範圍會使用暴力。
inline void FFT(E *a,int r){
for(int i=0;i<n;i++) if(rev[i]>i) swap(a[rev[i]],a[i]);
for(int i=1;i<n;i<<=1){
E wn(cos(M_PI/i),r*sin(M_PI/i));
for(int j=0;j<n;j+=(i<<1)){
E w(1,0);
for(int k=0;k<i;k++,w=w*wn){
E x=a[j+k],y=w*a[j+k+i];
a[j+k]=x+y ; a[j+k+i]=x-y;
}
}
}
if(r==-1) for(int i=0;i<n;i++) a[i].real/=n;
}
運用生成函式的計數問題往往會對一個質數取模,如果這個質數可以表示成,其中為奇數大於多項式的度數,那麼就可以用這個質數的原根代替複數根,實現多項式的係數對一個質數取模,這個演算法就是NTT(快速數論變換),這種模數稱為NTT模數。
inline void Pre(int n){
num=n;
int g=Pow(3,(P-1)/num);
w[0][0]=w[1][0]=1; for(int i=1;i<num;i++) w[0][i]=1LL*w[0][i-1]*g%P;
for(int i=1;i<num;i++) w[1][i]=w[0][num-i];
}
inline void NTT(int *a,int n,int r){
for(int i=1;i<n;i++) if(rev[i]>i) swap(a[i],a[rev[i]]);
for(int i=1;i<n;i<<=1)
for(int j=0;j<n;j+=i<<1)
for(int k=0;k<i;k++){
int x=a[j+k],y=1LL*a[j+k+i]*w[r][num/(i<<1)*k]%P;
a[j+k]=(x+y)%P; a[j+k+i]=(x+P-y)%P;
}
if(!r) for(int i=0,inv=Pow(n,P-2);i<n;i++) a[i]=1LL*a[i]*inv%P;
}
不過有些喪心病狂的題的模數不是NTT模數,這個時候需要CRT合併。
多項式求逆
最後會得到,這是一個非齊次線性遞推,因為求的第n項不大,只要直接求出就行了
很容易可以得到,如果令
我們已經知道了可以使用FFT和NTT在
O
(
n
多項式
由若干個單項式相加組成的代數式叫做多項式
形如:f(x)=∑ni=0aixif(x)=∑i=0naixi,
degf(x)degf(x)稱為ff的度,是f(x)f(x)最高次項的次數。
生成函式
形如∑∞i=0aixi∑i=0∞aixi
1.歸併排序演算法思路
首先我們要清楚,歸併排序演算法採用了分治法的思想,即將原問題分解為幾個規模較小但類似於原問題的子問題,遞迴地求解這些子問題,然後再合併這些子問題的解來建立原問題的解。歸併排序首先將排序分成兩部分,接著再將這兩部分分解成更小的兩部分,直到分解到只剩一個元素為止。
師父的擴充套件歐幾里得演算法詳細部落格師父喲
大神的求逆元詳細部落格大神的呢
gcd(a,b)即求a和b的最大公約。用輾轉相除法求得。
擴充套件歐幾里得演算法是歐幾里得演算法(又叫輾轉相除法)的擴充套件。除了計算a、b兩個整數的最大公約數,此演算法還能找到
在acm競賽中,組合數取模的題目還是經常會見到的,所以這是有必要掌握的一個演算法。我本人就因為這個東西而被坑了很多次了= =之前的部落格也都扯過了,就不多說了,下面進入正題。
(1)楊輝三角求組合數
楊輝三角這個東西應該都不陌生,三角的兩邊始終為一,之後向
在比賽時 , 如果遇到CmnCnm的n比較大 , 我們不能通過預處理階乘和逆元來計算 , 而題目又要求對答案取一個質數模的時候 , 我們可以用Lucas定理來簡化計算
Lucas 定理:
定義 : n,m是非負整數,p是素數時 , Lucas(
一、先說一說求餘和取模的區別。
一般情況下,大家都把求餘和求模混為一談。其實不然,求餘和取模是有區別的。
a%b 簡單來說,求餘的結果應該與a的符號保持一致;
而取模的結果應該與b的符號保持一致。
求餘
取模
5%2
1
1
-5%2
1
-1
5%-2 sca 如果 數據 fpm void its bzoj3456 limit set
3456: 城市規劃
Time Limit: 40 Sec Memory Limit: 256 MBSubmit: 798 Solved: 451[Submit][Status][Di oid int lan ret 多項式 algo com 題意 orm 【題意】給定n,求Σi=0~nΣj=1~i s(i,j)*2^j*j!,n<=10^5。
【算法】生成函數+排列組合+多項式求逆
【題解】參考: [BZOJ4555][Tjoi2016&H 方案 所在 scanf 整理 輸入 eof 輸出 std define 題目描述
求出n個點的簡單(無重邊無自環)無向連通圖數目mod 1004535809(479 * 2 ^ 21 + 1).
輸入
僅一行一個整數n(<=130000)
輸出
僅一行一個整 play 給定 得到 精度 markdown 分配 二次 splay 倒置 多項式求逆
給定\(A(x)\)求滿足\(A(x)*B(x)=1\)的\(B(x)\)
寫成
\[A(x)*B(x)=1(mod \ x^n)\]
我們會求\[A(x)*B(x)=1(mod \ x desc esc swap 存在 line tor memcpy status geo
城市規劃
Time Limit: 40 Sec Memory Limit: 256 MBSubmit: 1091 Solved: 629[Submit][Status][Dis n) 100% 存在 d+ ont inner tar 現在 一行
城市規劃
時間限制:40s 空間限制:256MB
題目描述
剛剛解決完電力網絡的問題, 阿貍又被領導的任務給難住了.
剛才說過, 阿貍的國家 == reverse turn chang 一個 函數 span 化簡 amp 首先,我們構造一個函數$G(x)$,若存在$k∈C$,則$[x^k]G(x)=1$。
不妨設$F(x)$為最終答案的生成函數,則$[x^n]F(x)$即為權值為$n$的神犇二叉樹個數 n) 意義 詳解 需要 一個 求逆 ont time 前置 概述
多項式求逆元是一個非常重要的知識點,許多多項式操作都需要用到該算法,包括多項式取模,除法,開跟,求ln,求exp,快速冪。用快速傅裏葉變換和倍增法可以在$O(n log n)$的時間復雜度下求出一個$n$次 out mat BE def sizeof ted online connected mod 題目鏈接:
https://www.lydsy.com/JudgeOnline/problem.php?id=3456
題意:
求出\(n\)個點的簡單(無重邊無自環)無向連通圖的 間接 zoj 3456 ini 不難 har 大小 #define form lock
題面 :
求有 \(n\) 個點的無向有標號連通圖個數 . \((1 \le n \le 1.3 * 10^5)\)
題解 :
首先考慮 dp ... 直接算可行的方案數 , 逆元 In 求逆 多項式 rac span clas inline times 多項式求逆
求 \(A(x)\) 在 \(\%x^{n}\) 意義下的逆元 \(B(x)\)
首先求出 \(A(x)\) 在 \(\%x^{\lceil \frac{n}{2} \rceil} 求逆 我們 for ora pac a* inline ali ace 由於我懶得不想學蠢得學不會分治 \(\text{FFT}\) ,發現可以用多項式求逆來完整地代替...
文章節選自分治 FFT 與多項式求逆,轉載方便自己查看。更多多項式求逆和分治 \(\text{FF tdi stdout style show include main -a 沒有 如果 傳送門
學習了一下大佬的->這裏
已知多項式$A(x)$,若存在$A(x)B(x)\equiv 1\pmod{x^n}$
則稱$B(x)$為$A(x)$在模$x^n$下 相關推薦
多項式各種操作(求逆,取模,ln,exp,開方,牛頓迭代)+生成函式
[Notes][多項式]雜記 · 多項式演算法—多項式求逆 多項式取模 多項式開根…
歸併排序演算法與求逆序對思路及Java實現
擴充套件歐幾里得演算法及求逆元
求組合數取模(楊輝三角打表 & 求逆元(擴充套件歐幾里得、費馬小定理、尤拉定理、線性求法) & Lucas)
Lucas定理(求組合數取模) 擴充套件Lucas定理(解決模數非質情況)
關於求餘和取模的區別以及負數取摸
BZOJ3456: 城市規劃 多項式求逆
【BZOJ】4555: [Tjoi2016&Heoi2016]求和 排列組合+多項式求逆 或 斯特林數+NTT
【bzoj3456】城市規劃 容斥原理+NTT+多項式求逆
多項式求逆,除法,開方,任意模數FFT
bzoj 3456 城市規劃 多項式求逆+分治FFT
[BZOJ3456]城市規劃(生成函數+多項式求逆+多項式求ln)
【BZOJ3625】【codeforces438E】小朋友和二叉樹 生成函數+多項式求逆+多項式開根
【learning】 多項式求逆元詳解+模板
BZOJ 3456 城市規劃 ( NTT + 多項式求逆 )
BZOJ 3456: 城市規劃 與 算法介紹(多項式求逆元 , dp)
多項式求逆
[總結]多項式求逆代替分治 $ ext{FFT}$
洛谷P4238 【模板】多項式求逆(NTT)