首先,我們需要了解矩陣。矩陣說白了就是一堆數,排成長方形的形狀。
然後就是矩陣的運算,加減都很簡單,這裡談一下乘法:
所以矩陣相乘,一定是有其中乙個矩陣的行等於另乙個矩陣的列的。
矩陣快速冪則和一般的快速冪的操作是一樣的,只是把乘法變成了矩陣乘而已,就像過載那樣。
這裡還要說一下單位矩陣:
對於n ∗m
n*mn∗
m的矩陣,它的單位矩陣大小為m∗m
m*mm∗
m,對於m∗n
m*nm∗
n的矩陣,它的單位矩陣大小為n∗n
n*nn∗
n。也就是說單位矩陣都是正方形的,這是因為只有正方形的矩陣能保證結果和前乙個矩陣形狀相同。
單位矩陣的元素非0即1,從左上角到右下角的對角線上元素皆為1,其他皆為0。
單位矩陣的意義就是它相當於普通乘法裡面的1,和任何數乘1都等於它本身那樣,任何矩陣乘單位矩陣都等於原矩陣。
模板:洛谷p3390
#include
#include
using
namespace std;
#define n 105
#define ll long long
#define mod 1000000007
int n;
ll k;
struct node
;node a,e/*單位矩陣*/
;node mul
(node x,node y)
node pow
(node x,ll y)
return ans;
}int
main()
node ans=
pow(a,k)
;for
(int i=
1;i<=n;i++
)}
矩陣快速冪學習筆記
其實會用快速冪已經有好長一陣子了,但是一直沒有寫一篇入門快速冪的筆記。據說,在遞推式優化上具有神奇的效果 效率很高 兩矩陣相乘,樸素演算法的複雜度是o n 3 如果求一次矩陣的m次冪,按樸素的寫法就是o n 3 m 既然是求冪,不免想到快速冪取模的演算法,這裡有快速冪取模的介紹,a b m 的複雜度...
學習筆記 矩陣快速冪
前置芝士 矩陣 矩陣乘法 這兩個芝士並不是很難 重點可能在應用方面 首先介紹我所理解的廣義的矩陣乘法 現在我們手上有兩個矩陣 a 和 b 我們期望得到乙個答案矩陣 ans 其中 ans i j ans i j a i k b i k 其中 代一種運算 如 min max 等等 都可以用矩陣快速冪把遞...
矩陣快速冪 學習筆記
據說,矩陣快速冪在遞推式優化上相當神奇,而且效率很高。兩矩陣相乘,樸素演算法的複雜度是o n 3 如果求一次矩陣的m次冪,按樸素的寫法就是o n 3 m 既然是求冪,不免想到快速冪取模的演算法,這裡有快速冪取模的介紹,a b m 的複雜度可以降到o logb 如果矩陣相乘是不是也可以實現o n 3 ...