矩陣構造 hdu3306

2021-08-07 19:17:18 字數 1320 閱讀 7690

題意:定義另一種類似斐波那契數列的數列,a(0) = 1 , a(1) = 1 , a(n) = x * a(n - 1) + y * a(n - 2) (n >= 2),現在要計算s(n) , s(n) = a(0)^2 +a(1)^2+……+a(n)^2.

資料範圍

每組樣例給定 n, x , y.

n : 2<= n <= 2^31 – 1

x : 2<= x <= 2^31– 1

y : 2<= y <= 2^31 – 1

題解

因為n達到了1e9,所以用矩陣快速冪計算,難點在於構造矩陣。

給出乙個大神的題解,以及關於構造矩陣的一些練習。

下為解題報告:林大陳宇

該題為矩陣連乘問題,主要考慮以下公式:

f(n)=x*f(n-1)+y*f(n-2)

先看 s(n)=s(n-1)+f(n)^2;

右邊出現了n,不可以的,只能出現n-1  或n-2

所以:s(n-1)=s(n-2)+f(n-1)^2;  右邊有2項,s(n-2)和f(n-1)^2必須要有了

s(n-2)-----------s(n-1)

f(n-1)^2------f(n)^2=[xf(n-1)+yf(n-2)]^2=出現了f(n-2)^2和2xyf(n-1)f(n-2),所以共4項

最左邊是1個空的矩陣(4*4),也是我們要構造的矩陣(只要學過矩陣的人,就能把它算出來了吧)

然後代入矩陣連乘冪的模板算下就行了(該模板要會揹著敲)

#include #include #include #include #define ll long long

using namespace std;

const ll mod=10007;

struct node

res,a;

node mul(node aa,node bb)

ll ans=0;

for(int i=0;i<2;++i)

for(int j=0;j<4;++j)

ans=(ans+res.mp[i][j])%mod;

return ans;

}int main()

return 0;

}

hdu 3483 矩陣構造

這道題寒假的時候看過,還不小心看了題解,不過題解說神馬早就忘了,剛開始解題的時候完全想錯了,後來才想起來是用矩陣構造 這道題的確適合構造矩陣,因為所求的函式值滿足線性關係,令f n 為最終求解值 首先我們要明確如果用矩陣的作法,那麼矩陣乘法中,最終矩陣,必須包含f n 還可以包含其他函式g n h ...

hdu2276 矩陣構造

題意 給了n個燈泡的狀態,他們繞成乙個環,0是滅,1是亮,每一秒燈泡的狀態都會改變,規則是如果當前這個燈泡的左邊的燈泡當前是狀態1,那麼下一秒當前的這個燈泡狀態就改變0變1,1變0,最後問你m秒後的狀態。思路 我們先找當前狀態和下乙個狀態的關係 狀態也就是秒 我們可以抽象成這麼一種關係,如果第i個燈...

矩陣構造 矩陣快速冪 HDU5950

題目 題意 給出公式f n f n 1 f n 2 2 n 4 給出n f 1 f 2 求f n 分析 快速冪 把公式分解一下,求一下矩陣,矩陣快速冪搞一下就好 題目的難點在於矩陣的構造題解 典型的矩陣快速冪的運用。關鍵是i 4怎麼維護?我們可以當成求第i 1項,那麼i 4就變成了 i 1 4。那麼...