題目鏈結
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 會超時,這裡引入快速冪來...