矩陣加速數列遞推

2022-08-17 04:06:17 字數 802 閱讀 5052

zoj problem set - 3690 

code

#include #include using

namespace std;

struct matrix;

matrix()

matrix operator*(const matrix& t)const

#undef mod

#undef maxn

}; int main()

poj 3734 blocks

f[i][a][b](a,b=0/1)表示長度為i的序列,紅綠顏色的奇偶情況分別為a,b。遞推公式比較好寫,答案就是f[n][0][0],後兩維也可以用乙個兩位二進位制數表示。可以發現f[0]=,所以寫起來也比較簡潔。其實實現上不需要體現出狀態,全是矩陣乘。

#include #include 

using

namespace

std;

struct

matrix;

matrix(

int _x=0,int _y=0

):x(_x),y(_y)

matrix

operator*(const matrix& rig)const}}

return

res;

}};matrix pow(matrix a,

intn)

intmain()

int t;cin>>t;

while(t--)

return0;

}

view code

模板 矩陣加速(數列)(矩陣加速遞推)

a 1 a 2 a 3 1 a x a x 3 a x 1 x 3 求a數列的第n項對1000000007 10 9 7 取餘的值。輸入格式 第一行乙個整數t,表示詢問個數。以下t行,每行乙個正整數n。輸出格式 每行輸出乙個非負整數表示答案。矩陣加速裸題 和我的前一篇基本一模一樣 只不過改變了要乘的...

矩陣加速遞推

關於矩陣加速數列遞推 給定乙個遞推數列 f i a 1 f i 1 a 2 f i 2 a k f i k 我們普通計算的話肯定是逐個計算,複雜度較大。我們可以用矩陣表示 left begin f i f i 1 f i k end right 為了遞推出 f n 我們需要找到乙個係數矩陣 a 使得...

斐波那契數列(矩陣加速遞推)

f 1 1 f 2 1 f n f n 1 f n 2 n 2 且 n 為整數 請你求出 f n mod 1000000007 的值。輸入格式 第 1 行 乙個整數 n 輸出格式 第 1 行 f n mod 1000000007 的值 n 1e18 我們已經知道遞推公式了,但有個問題,就是n太大 怎...