(详解)矩阵快速幂详解与常见转移矩阵的构造
目錄
轉移矩陣求解套路
常見轉移矩陣1-斐波那契矩陣
承接套路
常見轉移矩陣2-類斐波那契數列
常見轉移矩陣3-冪常數
?前綴和
具體DP問題
---------------------------------------------------------------------------------------------------------------------------------
網上大部分講解都是停留在快速冪的模板和求解斐波那契數列上,但矩陣快速冪的應用遠不及此,且難點在于轉移矩陣的構造,而且會結合具體DP問題來構造轉移矩陣。
答案的求解包括三個矩陣 答案矩陣 = 轉移矩陣 * 初始矩陣
-
轉移矩陣求解套路
重點在于轉移矩陣的求得,套路是,找到轉移方程,由特殊到一般,考慮承接
-
常見轉移矩陣1-斐波那契矩陣
找到轉移方程
可知,要想求解f[n],必須知道f[n-1],f[n-2]
考慮特殊情況f[n]
得初始矩陣
答案矩陣(f(n)處于(1,1)位置,故是轉移矩陣的第一行乘上初始矩陣的第一列)
轉移矩陣
得到特殊矩陣
考慮承接
考慮到我們即使我們本次求得了f(n),但是我們不得不為下一次f(n+1)的求解做準備,因此我們需要承接上次求解的f(n-1),如何求解,很容易,f(n-1)在(2,1)位置,只需要轉移方程第二行乘上初始方程等于f(n-1)即可,
? ? ?
特殊到一般
對轉移方程進行快速冪,把初始方程變成普通dp時最初狀態,在斐波那契中的dp解法中,我們只需要先知道dp[0]=0,dp[1]=1即可。轉移方程的冪數是n-1
當然,也完全可以這樣,
承接套路
值得注意的是,這種承接方式在大多數題目中都適用,也就是將二行往后的每行i,(i,i-1)位置填上1,其余位置填上0即可。
?
常見轉移矩陣2-類斐波那契數列
主要是一些含有常數系數的
?
第一行換系數,第二行往后考慮承接即可
?
常見轉移矩陣3-冪常數
?
按照第一類時的套路,求fn,無非就是要知道fn-1,與n^2
可是我們發現,要求出(n+1)^2,靠n^2是遠遠不夠的
(n+1)^2=n^2+1+2*n? ,我們還應該知道n,和常數1
?n+1)^2被推了出來,還要考慮本次能供fn+1使用,因此還應該加上n+1,與常數1
?然后特殊化一般,利用快速冪求解即可。
其余更高次冪常數,利用二項式定理
n^3 = (n-1+1)^3 = (n-1)^3 + 3*(n-1)^2 +? ?3*(n-1)? + 1
n^4? =(n-1+1)^4 = (n-1)^4? + 4*(n-1)^3? + 6*(n-1)^2 + 4*(n-1)? + 1
.......以此類推
n^3為例?
?前綴和
T[0]=T[1]=T[2]=1;
T[N]=T[N-1]+T[N-2]+T[N-3]
求解? T[A]+T[A+1]+...+T[B]
也就是要構造前綴和sb,sa-1
可以先求出sn
sn=tn+sn-1
這里的tn的構造方式就是一個類菲波那切數列的構造方式
考慮承接即可
具體DP問題
P5343 【XR-1】分塊-矩陣快速冪加速DP_石油生產隊里的秦三的博客-CSDN博客
總結
以上是生活随笔為你收集整理的(详解)矩阵快速幂详解与常见转移矩阵的构造的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: stm32 adc测NTC 100K 3
- 下一篇: 微软“免费域名邮箱”Windows Li