1. 程式人生 > >矩陣快速冪在常係數線性遞推關係中的應用

矩陣快速冪在常係數線性遞推關係中的應用

先引入一下,知乎上有一個問題 關於斐波拉契數列的一個低階問題 。題主詢問了關於求解斐波拉契數列第n項對10007取模的結果。而這個n,可以達到106甚至109

解法已經在排名第一的回答中給出了,主要思路就是快速冪和矩陣乘法的結合律,亦即矩陣快速冪。具體方法這裡也就不再給出。但可以依託此思想,拓展出在O(logn) 的時間下計算一個遞推關係的第n項。

另外要說明的一點是,這種方法僅適用於常係數線性遞推關係,即遞推關係

hn=a1hn1+a2hn2++akhnk+b

中,a1,a2,,ak 以及b 均為常數(可以為0)的遞推關係,且hn,hn1,hn2,,hnk 的指數均為1。

這裡我們先考慮遞推關係為齊次遞推關係的情況,即忽略常數項b(令 b

=0 ), 由線性代數的知識可以知道,在遞推關係

hn=a1hn1+a2hn2++akhnk

中,如果令 n=s+k, 則原遞推關係可以轉換為矩陣問題:

hs+khs+k1hs+k2hs+2hs+1=Ahs+k1hs+k2hs+k3hs+1hs

其中, A矩陣為:

a11000a20100a30010ak10001ak0000

可以看出, A 矩陣是一個k+1 階方陣,且第一行由遞推關係等號右邊的k個元素hn1,

相關推薦

矩陣快速係數線性關係應用

先引入一下,知乎上有一個問題 關於斐波拉契數列的一個低階問題 。題主詢問了關於求解斐波拉契數列第n項對10007取模的結果。而這個n,可以達到106甚至109 。 解法已經在排名第一的回答中給出了,主要思路就是快速冪和矩陣乘法的結合律,亦即矩陣快速冪。具體方法

矩陣快速處理一類線性組問題

最近兩場比賽,都涉及到此類問題!以前沒注意過這種問題,都在狀態轉移方程推出後,止步於n太大!事後總結,線性遞推可以用矩陣來表示,進而快速冪解決n太大的問題! 題意:n×m矩陣填黑白兩色,

HDU - 2256 矩陣快速 帶根號的

mat cpp matrix 有一個 rac 分析 eof rhs oid 題意:求$ [(\sqrt{2}+\sqrt{3})^{2n}] mod 1024 $ 分析: 把指數的2帶入 原式等於 $ [(5+2\sqrt{6})^n] $ 有一個重要的結論是n次運算後其結

[學習筆記]多項式的整除、取模、多點求值和插值及係數線性

一、開頭 ( WC2019 神犇協會) undefeatedKO : NOI2017 的題大家都 AK 了嗎? All : AK 了! ION :我們穿越到 2019 年的 WC 怎麼樣? olis :好啊!聽說一個弱雞 xyz32768 要來 WC ,我們一到就把他 D 一遍,這樣他

係數線性(Fibonacci數列)

(一)Fibonacci數列 f[n]=f[n-1]+f[n-2] , f[1]=f[2]=1 的第n項的快速求法(不考慮高精度). 已知 f[0] = 0 , f[1] = f[2] = 1 , f[3] = 2 , f[4] = 3 , f[5] = 5 ……. f[n]=f[n-1]

【BZOJ4944】【NOI2017】泳池 概率DP 係數線性 特徵多項式 多項式取模

題目大意   有一個1001×n1001×n的的網格,每個格子有qq的概率是安全的,1−q1−q的概率是危險的。   定義一個矩形是合法的當且僅當: 這個矩形中每個格子都是安全的 必須緊貼網格的下邊界   問你最大的合法子矩形大小

【XSY2730】Ball 多項式exp 多項式ln 多項式開根 係數線性 DP

題目大意   一行有n個球,現在將這些球分成k 組,每組可以有一個球或相鄰兩個球。一個球只能在至多一個組中(可以不在任何組中)。求對於1≤k≤m的所有k分別有多少種分組方法。   答案對998244353取模。   n≤109,m<219 題解

係數齊次線性優化矩陣快速-bzoj4161-4944

常係數齊次線性遞推式 fk=∑i=1naifk−ifk=∑i=1naifk−i 形如上式的dpdp轉移式(ff表示dpdp狀態,aa表示轉移係數)即為常係數齊次線性遞推式。對於這樣的dpdp式,給定f1,2,..,k,a1,2,...,kf1,2,..,k,

HDU 5863 cjj's string game ( 16年多校10 G 題、矩陣快速優化線性DP )

sca 組合數 矩陣 spl blank mage acm 組合 str 題目鏈接 題意 : 有種不同的字符,每種字符有無限個,要求用這k種字符構造兩個長度為n的字符串a和b,使得a串和b串的最長公共部分長度恰為m,問方案數 分析 : 直覺是DP 不過當時看到 n 很

矩陣運算快速快速計算線性

斐波那契數列 f(0)=0; f(1)=1; f(n)=f(n-1)+f(n-2),n>1 從上面這個方程中我們可以看到很明顯的遞推關係,當n>1的時候很明顯發現會有一個關係式,但是實際上我們在做運算的時候,如果一步一步的按照遞推式計算,將會消耗大量的時間(最短

hdu 2604 矩陣快速

scan ems while href sca class stdin tdi %d HDU 2604 Queuing (遞推+矩陣快速冪) 這位作者講的不錯,可以看看他的 #include <cstdio> #include <iostream

hdu-2604 Queuing---+矩陣快速

其中 sin 一位 strong DC net name 思路 eof 題目鏈接: https://vjudge.net/problem/HDU-2604 題目大意: n個人排隊,f表示女,m表示男,包含子串‘fmf’和‘fff’的序列為O隊列,否則為E隊列,有多少個序列為

HDU6185 Covering (+矩陣快速

esp over () n-1 告訴 matrix \n nbsp 答案 大致題意:讓你用1*2規格的地毯去鋪4*n規格的地面,告訴你n,問有多少種不同的方案使得地面恰好被鋪滿且地毯不重疊。答案對1000000007取模 遞推得f(n)=f(n-1)+5*f(n-2)+

POJ 3734 Blocks(矩陣快速+矩陣式)

scan efi stdio.h opened ans hide 最終 spl pen 題意:個n個方塊塗色, 只能塗紅黃藍綠四種顏色,求最終紅色和綠色都為偶數的方案數。 該題我們可以想到一個遞推式 。 設a[i]表示到第i個方塊為止紅綠是偶數的方案數, b[i]為紅綠

【HDU2604】Queuing(矩陣快速+

題目連結 Queuing Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(

[BZOJ4944/UOJ#316][NOI2017]泳池(概率DP+係數齊次線性

Address 洛谷P3824 BZOJ4944 UOJ#316 LOJ#2304 Solution… 一、差分 容斥 要限制最大值恰好為一個定值往往是不好做的。 所以考慮容 (cha) 斥 (fen) ,把詢問

矩陣快速(共軛函式兩種式)

題目連結:https://cn.vjudge.net/contest/261339#problem/B AC1:ans= x(n)+y(n)*sqrt(6),所以,ans=x(n)+y(n)*sqrt(6)+(x(n)-y(n)*sqrt(6))-(x(n)-y(n)*sqrt(6))=2*

HDU 5950 - Recursive sequence - [矩陣快速加速][2016ACM/ICPC亞洲區瀋陽站 Problem C]

題目連結:http://acm.hdu.edu.cn/showproblem.php?pid=5950 Farmer John likes to play mathematics games with his N cows. Recently, they are attracted by recursive

POJ3070 Fibonacci(矩陣快速加速)【模板題】

題目連結:傳送門 題目大意:   求斐波那契數列第n項F(n)。   (F(0) = 0, F(1) = 1, 0 ≤ n ≤ 109) 思路:   用矩陣乘法加速遞推。 演算法競賽進階指南的模板: #include <iostream> #include &l