題解 P4838 P哥破解密碼

2022-04-08 05:42:40 字數 954 閱讀 1077

矩乘優化遞推 (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...