【題目大意】:
n*m的棋盤,讓你用1*2的骨牌完全覆蓋,問有多少種方案。(m<=5,n<=10^9)
【題目分析】:
最開始我就往狀壓dp上想,但是發現這個n太大,不僅空間承受不了,時間也是不允許的。
想了很久,沒有思路,所以決定去看看題解。
果然這個題有很神的演算法。
標準演算法:矩陣乘法。
我們將問題抽象化一下,在整個棋盤上,只有相鄰兩行有關聯。這種想法類似狀壓dp。
這樣一些狀態之間就有轉化關係。
這些狀態通過一系列的轉化,經過了n行,得到了1111……(滿狀態)
所以這個問題就轉化成了:給你乙個圖,問從乙個點出發經過n步正好回到原來的點的路徑的個數。
這個就有乙個經典的演算法就是矩陣乘法。
將圖的鄰接矩陣進行乘方,矩陣的n次方得到的矩陣中[i,j]元素表示從i走到j經過正好n步的路徑個數。
那麼這個問題就很好解決了,方法就是找到狀態之間的聯絡,得出矩陣。
然後快速冪乘方,得到矩陣的[1<編譯通過...
├測試資料01:答案正確... 0ms
├測試資料02:答案正確... 0ms
├測試資料03:答案正確... 0ms
├測試資料04:答案正確... 0ms
├測試資料05:答案正確... 0ms
├測試資料06:答案正確... 0ms
├測試資料07:答案正確... 0ms
├測試資料08:答案正確... 0ms
├測試資料09:答案正確... 0ms
├測試資料10:答案正確... 0ms
├測試資料11:答案正確... 0ms
├測試資料12:答案正確... 0ms
├測試資料13:答案正確... 0ms
├測試資料14:答案正確... 0ms
├測試資料15:答案正確... 0ms
├測試資料16:答案正確... 0ms
├測試資料17:答案正確... 0ms
├測試資料18:答案正確... 0ms
├測試資料19:答案正確... 0ms
├測試資料20:答案正確... 0ms
├測試資料21:答案正確... 0ms
├測試資料22:答案正確... 0ms
├測試資料23:答案正確... 0ms
├測試資料24:答案正確... 0ms
├測試資料25:答案正確... 0ms
-------------------------
accepted有效得分:100 有效耗時:0ms
【**】:
學習筆記 1 19
abstract 關鍵字 可以修飾類和方法。抽象類 包含抽象方法和構造器,在開發中,會提供抽象類的子類,讓子類例項化。抽象方法 只有方法宣告,沒有方法體。若子類沒有實現父類所有的抽象方法,那麼這個子類也屬於抽象類。模版方法設計模式 抽象類的應用 模版方法的設計模式 public class temp...
119 開始學習CMD
平時都會用到,所以學習下沒有壞處,但是一直沒有找到系統的學習方法,所以自己就零零散散地記錄下,以便自己以後查閱!輸入 cd.可以返回到父資料夾 注 我猜 cd 的全稱應該是 change directory 就是 改變目錄 的意思!注 cd 或是 cd 都是返回根目錄的命令!輸入 cd d f de...
裝箱問題 vijos
有乙個箱子容量為v 正整數,o v 20000 同時有n個物品 o n 30 每個物品有乙個體積 正整數 要求從 n 個物品中,任取若千個裝入箱內,使箱子的剩餘空間為最小。第一行,乙個整數,表示箱子容量 第二行,乙個整數,表示有n個物品 接下來n行,分別表示這n個物品的各自體積。乙個整數,表示箱子剩...