zoj problem set - 3690
codepoj 3734 blocks#include #include using
namespace std;
struct matrix;
matrix()
matrix operator*(const matrix& t)const
#undef mod
#undef maxn
}; int main()
f[i][a][b](a,b=0/1)表示長度為i的序列,紅綠顏色的奇偶情況分別為a,b。遞推公式比較好寫,答案就是f[n][0][0],後兩維也可以用乙個兩位二進位制數表示。可以發現f[0]=,所以寫起來也比較簡潔。其實實現上不需要體現出狀態,全是矩陣乘。
#include #includeview codeusing
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;
}
模板 矩陣加速(數列)(矩陣加速遞推)
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太大 怎...