nkoj 3711 擺花
時間限制 : - ms 空間限制 : 65536 kb
評測說明 : 時限1000ms
問題描述
藝術館門前將擺出許多花,一共有n個位置排成一排,每個位置可以擺花也可以不擺花。有些花如果擺在相鄰的位置(隔著乙個空的位置不算相鄰),就不好看了。假定每種花數量無限,求擺花的方案數。
輸入格式輸出格式
輸出只有乙個整數,為方案數(這個數字可能很大,請輸出方案數除以1000000007的餘數)
樣例輸入 1
2 2
0 1
1 0樣例輸出 1
7樣例輸入 2
3 3
0 0 0
0 1 0
0 0 1
樣例輸出 2
50提示
樣例說明
七種方案為(空,空)、(空,1)、(1、空)、(2、空)、(空、2)、(1,1)、(2,2)
100%的資料,1<n≤1000000000,0<m≤100。
**ch round#30
思路:
把空位看做一種花,且該種花可以和所有花擺放在一起
用二維陣列a表示各種花之間的關係每多擺乙個格仔,就看做從乙個點經過一條邊到達下乙個點,問題即轉化為圖論,因為各點都可以做起點或終點,所以最終的方案數為求冪和矩陣各個數之和
#include
#include
#include
using
namespace
std;
#define ll long long
const
int p=1000000007;
const
int need=102;
typedef
int int_[need][need];
int_ a,ans,ans0,c;
int n,m;
void matrix_multi(int_ a,int_ b)
void matrix_power(int b)
}int main()
} m++;
for(int i=1;i<=m;i++) a[m][i]=a[i][m]=1;
ans0[m][m]=1;
matrix_power(n-1);
int cnt=0;
for(int i=1;i<=m;i++)
for(int j=1;j<=m;j++)
cnt=(ans[i][j]+cnt)%p;
printf("%d",cnt);
}
趣題 矩陣乘法 NKOJ 1896 多公尺諾
nkoj 1896 多公尺諾 時間限制 10000 ms 空間限制 65536 kb 問題描述 用2x1的多公尺諾骨牌填滿乙個4xn 1 n 10 9 的棋盤,總共有多少總方案。結果可能很大,輸出mod m 0 m 10 5 的值。輸入格式 一行,兩個整數n 和 m 輸出格式 一行,乙個整數表示結果...
NKOJ 4385 簡單計算(矩陣乘法)
問題描述 給你三個整數 n,x,和 m,計算 n k 1k xxk 輸入格式 一行,三個整數n,x,和 m,輸出格式 一行,乙個整數,表示計算結果 樣例輸入 1 100 1 10000 樣例輸出 1 樣例輸入 2 3 4 1000 樣例輸出 2 提示 1 n,m 2 10 9 1 x 50.注意到x...
挑戰題9 矩陣乘法
9 矩陣乘法 問題描述 給定乙個n階矩陣a,輸出a的m次冪 m是非負整數 例如 a 1 23 4 a的2次冪 7 10 15 22 輸入說明 第一行是乙個正整數n m 1 n 30,0 m 5 表示矩陣a的階數和要求的冪數 接下來n行,每行n個絕對值不超過10的非負整數,描述矩陣a的值 輸出說明 輸...