矩乘優化遞推 (hint:n<=10e9,線性的都沒法了)f[i][j](i ∈[ 1,n], j ∈ [0,2]),表示 n==i 時,乙個數末尾有j個a的方案數。
由於末尾有a的可能性只與上一狀態中乙個狀態有關(1個a與0個a有關,2個a與1個a有關)。而末尾有0個aa的情況,只要塞乙個b就行了。所以是上一狀態中所有狀態方案數之和。
初始化:f[1][0]=1,f[1][1]=1,f[1][2]=0;
轉移方程:
f[i][0] = f[i - 1][2] + f[i - 1][1] + f[i - 1][0]
f[i][1] = f[i - 1][0]
f[i][2] = f[i - 1][1]
下文中座標+了1
//1 1 0
/* 1 1 0
1 0 1
1 0 0
*/
#define mod 19260817
struct matrix
friend matrix operator *(matrix a,matrix b)
friend matrix operator ^(matrix a,int k)
return res;
}};
int t;rd(t);
while(t--)
題解 洛谷P4838 P哥破解密碼
洛谷p4838 p哥破解密碼 對於n 1e7的資料,可以使用常規的動態規劃。用f i 0 1 2 分別表示長度為i,且以aa a b結尾的字串的數量。可以得到狀態轉移方程 f i 0 f i 1 1 f i 1 f i 1 2 f i 2 f i 1 0 f i 1 1 f i 1 2 對於大資料,...
洛谷 P4838 P哥破解密碼 題解
a1 1 1 2 4 7 13 24 44 81 149 274 a2 0 1 1 2 4 7 13 24 44 81 149 274 b 1 2 4 7 13 24 44 81 149 274 f a2 a2 a1 a1 b b a1 a2 f 19260817 includeusing name...
題解 P2058 海港
我們注意到資料範圍,發現二維陣列並不可取,但是我們又注意到 k i 3 105 ki 3 10 5,所以採取一種新的思想 將所有人都讀在乙個一維陣列裡面 使用乙個佇列 q q 來儲存第 i role presentation i i艘船上人數的範圍,即 q q 儲存的是兩個數 l r role pr...