bzoj4031 HEOI2015 小Z的房間

2022-05-25 14:48:12 字數 984 閱讀 5209

time limit: 10 sec memory limit: 256 mb你突然有了乙個大房子,房子裡面有一些房間。事實上,你的房子可以看做是乙個包含n*m個格仔的格狀矩形,每個格仔是乙個房間或者是乙個柱子。在一開始的時候,相鄰的格仔之間都有牆隔著。

你想要打通一些相鄰房間的牆,使得所有房間能夠互相到達。在此過程中,你不能把房子給打穿,或者打通柱子(以及柱子旁邊的牆)。同時,你不希望在房子中有小偷的時候會很難抓,所以你希望任意兩個房間之間都只有一條通路。現在,你希望統計一共有多少種可行的方案。

第一行兩個數分別表示n和m。

接下來n行,每行m個字元,每個字元都會是』.』或者』』,其中』.』代表房間,』』代表柱子。

一行乙個整數,表示合法的方案數 mod 10^9

3 3對於前100%的資料,n,m<=9

矩陣樹定理裸題。。。

由於沒有逆元,所以要輾轉相除qaq

#include#define mod 1000000000

using namespace std;

const int maxn = 105;

long long a[maxn][maxn];

char mp[maxn][maxn];

int n, m, cnt, id[maxn][maxn];

int x = ;

int y = ;

inline bool check(int a, int b)

inline long long calc(int n)

f = -f;}}

if(!a[i][i]) return 0; ans = ans * a[i][i] % mod;

} return (f == 1) ? (ans) : (mod - ans) % mod;

}int main()

}cout << calc(cnt - 1) << endl;

return 0;

}

HEOI2015 BZOJ4031 小Z的房間

description 你突然有了乙個大房子,房子裡面有一些房間。事實上,你的房子可以看做是乙個包含n m個格仔的格狀矩形,每個格仔是乙個房間或者是乙個柱子。在一開始的時候,相鄰的格仔之間都有牆隔著。你想要打通一些相鄰房間的牆,使得所有房間能夠互相到達。在此過程中,你不能把房子給打穿,或者打通柱子 ...

HEOI2015 bzoj4031 小z的房間

description 你突然有了乙個大房子,房子裡面有一些房間。事實上,你的房子可以看做是乙個包含n m個格仔的格狀矩形,每個格仔是乙個房間或者是乙個柱子。在一開始的時候,相鄰的格仔之間都有牆隔著。你想要打通一些相鄰房間的牆,使得所有房間能夠互相到達。在此過程中,你不能把房子給打穿,或者打通柱子 ...

bzoj4031 HEOI2015 小Z的房間

你突然有了乙個大房子,房子裡面有一些房間。事實上,你的房子可以看做是乙個包含n m個格仔的格狀矩形,每個格仔是乙個房間或者是乙個柱子。在一開始的時候,相鄰的格仔之間都有牆隔著。你想要打通一些相鄰房間的牆,使得所有房間能夠互相到達。在此過程中,你不能把房子給打穿,或者打通柱子 以及柱子旁邊的牆 同時,...