骨牌覆蓋(矩陣快速冪)

2021-07-30 15:32:24 字數 679 閱讀 3455

題目鏈結

hiho提示;裡面說的很清楚了,看不懂的話就去做一做骨牌覆蓋的前兩道題,理解起來好理解一些;

#include

#include

#include

#include

#define ll long long

using

namespace

std;

const

int mod=12357;

int n;

int n,k;

struct zp

m;zp jx(zp a,zp b)

zp jk(zp a,int b)

return res;

}void dfs(int x,int y,int l)//得到轉移的矩陣

dfs((x<<1)+1,y<<1,l+1);//x不放

dfs(x<<1,(y<<1)+1,l+1);//x豎著放

if(l+2

<=k)

dfs((x<<2)+3,(y<<2)+3,l+2);//x橫著放

}int main()

n=1dfs(0,0,0);

zp res=jk(m,n);

printf("%d\n",res.arr[n-1][n-1]%mod);

}}

2015程式設計之美 骨牌覆蓋問題 一(矩陣快速冪)

描述 骨牌,一種古老的玩具。今天我們要研究的是骨牌的覆蓋問題 我們有乙個2xn的長條形棋盤,然後用1x2的骨牌去覆蓋整個棋盤。對於這個棋盤,一共有多少種不同的覆蓋方法呢?舉個例子,對於長度為1到3的棋盤,我們有下面幾種覆蓋方式 輸入第1行 1個整數n。表示棋盤長度。1 n 100,000,000 輸...

51nod 1033 骨牌覆蓋 V2(矩陣快速冪)

思路 這類題主要的難點就在於狀態的轉移,可以先看看這道題 骨牌覆蓋問題 三 中的提示 dp i j 表示從狀態i轉換成狀態j共有多少種方法 二進位制下的01表示骨牌是否覆蓋 則m行的排法就是dp m 1 的值 第0行的狀態為0,第m行的狀態為 1 n 1,則需進行m 1次dp dp dp 因此,我們...

快速冪(矩陣快速冪)

求 3 0 3 1 3 n mod 1000000007 input 輸入乙個數n 0 n 10 9 output 輸出 計算結果 sample input 3sample output 40 分析 利用等比數列的求和公式得所求和是 3 n 1 1 2,如果暴力求3 n 1 會超時,這裡引入快速冪來...