[HEOI2015] 小Z的房间 - 矩阵树定理

#include <bits/stdc++.h>
using namespace std;
#define int long long
const int N = 105;
const int mod = 1e+9;
namespace mat {
int a[N][N];
int n,p=1;
int Gauss() {
int ans = 1;
for(int i = 1; i < n; i ++) {
for(int j = i + 1; j < n; j ++)
while(a[j][i]) {
int t = a[i][i] / a[j][i];
for(int k = i; k < n; k ++)
a[i][k] = (a[i][k] - t * a[j][k] + mod) % mod;
swap(a[i], a[j]);
ans = - ans;
}
ans = (ans * a[i][i]) % mod;
}
return (ans + mod) % mod;
}
} // namespace mat
int a[N][N],d[N][N],b[N][N],c[N][N],n,m,ind;
char str[N];
int id(int i,int j) {
return c[i][j];
}
int add(int p,int q) {
a[p][q]=a[q][p]=1;
d[p][p]++;
d[q][q]++;
}
signed main() {
ios::sync_with_stdio(false);
cin>>n>>m;
for(int i=1; i<=n; i++) {
cin>>str+1;
for(int j=1; j<=m; j++) {
if(str[j]=='.') b[i][j]=0, c[i][j]=++ind;
else b[i][j]=1;
}
}
for(int i=1; i<=n; i++) {
for(int j=1; j<=m; j++) {
if(b[i][j]==0) {
if(i<n && b[i+1][j]==0) add(id(i,j),id(i+1,j));
if(j<m && b[i][j+1]==0) add(id(i,j),id(i,j+1));
}
}
}
mat::n=ind;
for(int i=1; i<=ind; i++) {
for(int j=1; j<=ind; j++) {
mat::a[i][j]=d[i][j]-a[i][j];
}
}
cout<<mat::Gauss()<<endl;
}
[HEOI2015] 小Z的房间 - 矩阵树定理的更多相关文章
- 【bzoj4031】[HEOI2015]小Z的房间 矩阵树定理
题目描述 你突然有了一个大房子,房子里面有一些房间.事实上,你的房子可以看做是一个包含n*m个格子的格状矩形,每个格子是一个房间或者是一个柱子.在一开始的时候,相邻的格子之间都有墙隔着. 你想要打通一 ...
- bzoj4031 [HEOI2015]小Z的房间——矩阵树定理
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4031 矩阵树定理的模板题(第一次的矩阵树定理~): 有点细节,放在注释里了. 代码如下: # ...
- [HEOI2015]小Z的房间(矩阵树定理学习笔记)
题目描述 你突然有了一个大房子,房子里面有一些房间.事实上,你的房子可以看做是一个包含n*m个格子的格状矩形,每个格子是一个房间或者是一个柱子.在一开始的时候,相邻的格子之间都有墙隔着. 你想要打通一 ...
- BZOJ 4031: [HEOI2015]小Z的房间 [矩阵树定理 行列式取模]
http://www.lydsy.com/JudgeOnline/problem.php?id=4031 裸题........ 问题在于模数是$10^9$ 我们发现消元的目的是让一个地方为0 辗转相除 ...
- BZOJ 4031: [HEOI2015]小Z的房间 (矩阵树定理 板题)
背结论 : 度-邻 CODE1 O(n3logn)O(n^3logn)O(n3logn) #include <bits/stdc++.h> using namespace std; typ ...
- bzoj 4031: 小Z的房间 矩阵树定理
bzoj 4031: 小Z的房间 矩阵树定理 题目: 你突然有了一个大房子,房子里面有一些房间.事实上,你的房子可以看做是一个包含n*m个格子的格状矩形,每个格子是一个房间或者是一个柱子.在一开始的时 ...
- LG4111/LOJ2122 「HEOI2015」小Z的房间 矩阵树定理
问题描述 LG4111 题解 矩阵树定理板子题. \(\mathrm{Code}\) #include<bits/stdc++.h> using namespace std; #defin ...
- BZOJ.4031.[HEOI2015]小Z的房间(Matrix Tree定理 辗转相除)
题目链接 辗转相除解行列式的具体实现? 行列式的基本性质. //864kb 64ms //裸的Matrix Tree定理.练习一下用辗转相除解行列式.(因为模数不是质数,所以不能直接乘逆元来高斯消元. ...
- BZOJ 4031 [HEOI2015]小Z的房间(Matrix-Tree定理)
[题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=4031 [题目大意] 你突然有了一个大房子,房子里面有一些房间. 事实上,你的房子可以看 ...
随机推荐
- Enityt模型特性
数据验证相关的数据注解: 特性 解释 Remote 使用 jQuery 验证插件远程验证程序的特性 FileExtension 验证文件扩展名 Compare 比较两个属性的值 RegularExpr ...
- 剑指offer-面试题43-1~n整数中1出现的次数-归纳法
/* 题目: 求出1~13的整数中1出现的次数,并算出100~1300的整数中1出现的次数? 为此他特别数了一下1~13中包含1的数字有1.10.11.12.13因此共出现6次,但是对于后面问题他就没 ...
- sublime修改快捷键样式
样式----------------{ "always_show_minimap_viewport": true, "auto_find_in_selection&quo ...
- CentOS 编译安装 PyCrypto
转载自:http://bugcharmer.blogspot.com/2012/07/building-pycrypto-on-amazon-ec2.html Step 1 - Install gcc ...
- jQuery笔记(六)jQuery之Ajax
jQuery确实是一个挺好的轻量级的JS框架,能帮助我们快速的开发JS应用,并在一定程度上改变了我们写JavaScript代码的习惯. 废话少说,直接进入正题,我们先来看一些简单的方法,这些方法都是对 ...
- cat基础用法
Linux中的cat命令连接文件并打印到标准输出设备上(通常是shell).cat的最常见用法之一是显示文件,还可以即时创建文件,并可以直接在终端上进行基本编辑. 创建文件 使用cat命令创建文件,请 ...
- HDU5608
题意 英文 做法 设\(g(n)=n^2-3n+2\),有\(g(n)=\sum\limits_{d|n}f(d)\),反演一下有\(f(n)=\sum\limits_{d|n}\mu(\frac{n ...
- 数据结构与算法之非比较排序【Java】
比较排序与非比较排序的对比 常见的快速排序.归并排序.堆排序.冒泡排序等属于比较排序.在排序的最终结果里,元素之间的次序依赖于它们之间的比较.每个数都必须和其他数进行比较,才能确定自己的位置.在冒泡排 ...
- list类型的应用场景 —— Redis实战经验
list类型是简单的字符串列表,按照插入顺序排序.每个列表最多可以存储 232 - 1 个元素(40多亿) ,list类型主要有以下应用场景.. 1. 消息队列 list类型的lpop和rpush(或 ...
- mysql权限过滤
1.用like做权限过滤 上级部门可以看到下级部门发布的正式文件,下级部门不能看到上级部门发布的正式文件 SELECT*FROM cms_nrgl_st a, mz_xzjg bWHERE a.sys ...