題 矩陣乘法 NKOJ 3711 擺花

2021-07-15 05:38:20 字數 1500 閱讀 3770

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的值 輸出說明 輸...