題意:
給了n個燈泡的狀態,他們繞成乙個環,0是滅,1是亮,每一秒燈泡的狀態都會改變,規則是如果當前這個燈泡的左邊的燈泡當前是狀態1,那麼下一秒當前的這個燈泡狀態就改變0變1,1變0,最後問你m秒後的狀態。
思路:我們先找當前狀態和下乙個狀態的關係(狀態也就是秒),我們可以抽象成這麼一種關係,如果第i個燈泡的狀態是ai,那麼下一秒的第i個燈泡的狀態是上一秒的(ai + ai-1)%2,這樣關係就出來了,我們構造矩陣,現在就以n=5為例:
上一秒 下一秒
a1 a2 a3 a4 a5 1 1 0 0 0 a1 a2 a3 a4 a5
0 1 1 0 0
* 0 0 1 1 0
0 0 0 1 1
1 0 0 0 1
ok然後就矩陣快速冪了,還有提示下,矩陣是不滿足交換律的,也就是說如果把5*5的矩陣放在前面,然後* 初始矩陣=下乙個狀態,這樣構造出來的矩陣會和上面不同,但兩個都是對的,最後乘出來的答案一樣(只要別吧各自的順序弄錯了)。
#include#includetypedef struct a;a mat_mat(a a,a b,int
n) a quick_mat(a a,int
b,int
n)return
c;}int
main
()
puts("");}return
0;}
HDU2276 矩陣遞推
1.題目鏈結。題目大意,有n個燈,它們圍城乙個圈,每個燈有兩種狀態,0代表燈沒有開,1代表燈開著。現在做這樣的調整,每一秒,我們檢查這個燈的左邊 就是逆時針相鄰的那個點 如果左邊的點是1,那麼把該點的燈開啟,否則不做變化。問t秒之後所有燈的狀態。2.這是乙個矩陣的遞推,我們這樣考慮,a i j 代表...
快速矩陣冪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 ...
hdu 3483 矩陣構造
這道題寒假的時候看過,還不小心看了題解,不過題解說神馬早就忘了,剛開始解題的時候完全想錯了,後來才想起來是用矩陣構造 這道題的確適合構造矩陣,因為所求的函式值滿足線性關係,令f n 為最終求解值 首先我們要明確如果用矩陣的作法,那麼矩陣乘法中,最終矩陣,必須包含f n 還可以包含其他函式g n h ...