矩陣專題 矩陣加速 矩陣快速冪

2022-03-30 20:43:08 字數 1404 閱讀 9374

矩陣有乙個神奇的作用,它可以用來快速求遞推式的第\(n\)項,學會這個技

能,你需要掌握這兩個前置芝士 矩陣快速冪,

矩陣加速(數列)

具體怎麼優化呢? 這個部落格已經總結的較為全面,在這裡我就不再加贅述。

貼一發我寫的模板

#include#include#include#include#define int long long

#define mod 1000000007

using namespace std;

const int maxn=1e2+10;

int n,k;

inline int read()

while(ch<='9'&ch>='0')

return f*ret;

}struct mat

inline void build()

} mat operator *(const mat &b)

void init()

} void out()

return ans;

}signed main()

#include#include#include#include#define int long long

#define mod 1000000007

using namespace std;

const int maxn=1e2+10;

inline int read()

while(ch<='9'&ch>='0')

return f*ret;

}struct mat

void build()

} mat operator *(const mat &b1)

void out()

return ans;

}mat mul(mat x,mat y)

} }return ans;

}signed main()

sort(b+1,b+1+n,cmp);

mat st;

st.a[1][1]=1;

st.a[1][2]=1;

st.a[2][3]=1;

st.a[3][1]=1;

mat ans;

ans.a[1][1]=1;

ans.a[1][2]=1;

ans.a[1][3]=1;

int fla=0;

for(int i=1;i<=n;i++)

if(fla==0)

ans=mul(ans,pow(st,q[b[i]]-q[b[i-1]]));

an[b[i]]=ans.a[1][1];

} for(int i=1;i<=n;i++){

cout《最後推薦一道練習題 p1306 斐波那契公約數

矩陣加速 矩陣 快速冪

矩陣的快速冪是用來高效地計算矩陣的高次方的。將樸素的o n 的時間複雜度,降到log n 這裡先對原理 主要運用了矩陣乘法的結合律 做下簡單形象的介紹 一般乙個矩陣的n次方,我們會通過連乘n 1次來得到它的n次冪。但做下簡單的改進就能減少連乘的次數,方法如下 把n個矩陣進行兩兩分組,比如 a a a...

快速冪,矩陣乘法,矩陣快速冪

快速冪利用二進位制 複雜度 log級 include include include include using namespace std typedef long long ll typedef unsigned long long ull int q power int a,int b,int...

矩陣快速冪 矩陣構造

fibonacci數列 f 0 1 f 1 1 f n f n 1 f n 2 我們以前快速求fibonacci數列第n項的方法是 構造常係數矩陣 一 fibonacci數列f n f n 1 f n 2 f 1 f 2 1的第n項快速求法 不考慮高精度 解法 考慮1 2的矩陣 f n 2 f n ...