hdu 5564 快速矩陣冪 數字dp

2021-07-08 18:57:57 字數 847 閱讀 4697

hdu5564

這道題一看就知道用數字dp,但是在狀態轉移時,發現不可能轉移成功,10^9,但是發現轉移可以用矩陣來進行表示,因此……

但是要注意矩陣最後一列用來計算結果。**看看就好了,畢竟卡著時間過的,2500ms左右,標程3000ms.

//hdu 5564 快速矩陣冪+數字dp

#include#include#include#define mod 1000000007

#define long long ll

using namespace std;

struct mat

friend mat operator*(mat a, mat b);

friend mat operator^(mat a, int n);

};mat operator*(mat a, mat b)

return res;

}mat operator^(mat a, int n)

a = a*a;

n = n / 2;

} return b;

}int main()

for (i = 0;i <= 9;i++)

b.on[i][70] = 1;

b.on[70][70] = 1;

mat a1, a2;

a1.init();

a2.init();

a1 = a*(b ^ (l - 1));

a2 = a*(b^r);

printf("%d\n", (a2.on[0][70] - a1.on[0][70]+mod)%mod);

} return 0;

}

hdu 4965 矩陣快速冪

給定兩個矩陣a,b,分別為n k和k n 求出矩陣c a b,矩陣m c n n 將矩陣m中的所有元素取模6,得到新矩陣m 並計算矩陣m 中所有元素的和 注意到ba 得到 6 6,而ab 得到1000 1000 轉化乘法算式為 m abababab.a ba n n 1 b 直接用矩陣快速冪即可 i...

快速矩陣冪HDU2276

題意 有n盞燈,編號為1到n。0表示不亮,1表示亮,如果 i th的燈的左邊燈是亮的,那麼下一秒鐘,i th燈的狀態要改變,0變成1,1變成0。第1個燈的 左邊是第n個燈 輸入t,輸入開始的狀態 問你在第t秒時,燈的狀態時什麼樣的,輸出來。分析 可推出下一秒的狀態a i a i 1 n n a i ...

快速矩陣冪HDU2254

題意 乙個有向圖,兩個頂點間可能有多條邊,視為不同的路徑,問從v1到v2之間的路徑長度大小在 t1,t2 的方案數mod 2008。輸入n條邊,p1,p2。因為p1,p2 2 32。但是總的頂點數不超過30.所以進行離散化即可。而且有可能t1 t2,所以要判斷一下。輸入的v1,v2可能也不在有向圖內...