BZOJ 4031: [HEOI2015]小Z的房间 [矩阵树定理 行列式取模]
http://www.lydsy.com/JudgeOnline/problem.php?id=4031
裸题........
问题在于模数是$10^9$
我们发现消元的目的是让一个地方为0
辗转相除法也可以做到这一点
只不过取模用减整除来代替就好了
注意本题需要分配$id$,因为柱子不能算
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cmath>
using namespace std;
typedef long long ll;
const int N=,MOD=1e9;
inline int read(){
char c=getchar();int x=;
while(c<''||c>''){c=getchar();}
while(c>=''&&c<=''){x=x*+c-'';c=getchar();}
return x;
}
int n,m,a[N][N];
char s[][];
void Gauss(int n){
int s=;
for(int i=;i<=n;i++){//printf("i %d\n",i);
int r=i;
for(;r<=n;r++) if(a[r][i]) break;
if(r==n+){puts("");return;}
if(r!=i){
s^=;
for(int k=i;k<=n;k++) swap(a[i][k],a[r][k]);
}
for(int j=i+;j<=n;j++)
while(a[j][i]){//printf("j %d %d\n",j,a[j][i]);
ll t=a[j][i]/a[i][i];
for(int k=i;k<=n;k++) a[j][k]=(a[j][k]-t*a[i][k]%MOD+MOD)%MOD;
if(a[j][i]==) break;
s^=;
for(int k=i;k<=n;k++) swap(a[i][k],a[j][k]);
}
}
ll ans=;
for(int i=;i<=n;i++) ans=ans*a[i][i]%MOD;
if(s) ans=(-ans+MOD)%MOD;
printf("%lld",ans);
}
int id[N][N],tot;
void buildEquation(){
for(int i=;i<=m;i++) for(int j=;j<=n;j++) if(s[i][j]=='.') id[i][j]=++tot;
for(int i=;i<=m;i++)
for(int j=;j<=n;j++) if(id[i][j]){
int u=id[i][j],v;
if(i!=&&s[i-][j]=='.'){
v=id[i-][j];
a[u][u]++;a[v][v]++;
a[u][v]--;a[v][u]--;
}
if(j!=&&s[i][j-]=='.'){
v=id[i][j-];
a[u][u]++;a[v][v]++;
a[u][v]--;a[v][u]--;
}
}
for(int i=;i<=m*n;i++) for(int j=;j<=m*n;j++) a[i][j]=(a[i][j]+MOD)%MOD;//printf("%d%c",a[i][j],j==n?'\n':' ');
}
int main(){
freopen("in","r",stdin);
m=read();n=read();
for(int i=;i<=m;i++) scanf("%s",s[i]+);
buildEquation();//puts("hi");
Gauss(tot-);
}
BZOJ 4031: [HEOI2015]小Z的房间 [矩阵树定理 行列式取模]的更多相关文章
- BZOJ 4031: [HEOI2015]小Z的房间 (矩阵树定理 板题)
背结论 : 度-邻 CODE1 O(n3logn)O(n^3logn)O(n3logn) #include <bits/stdc++.h> using namespace std; typ ...
- 【bzoj4031】[HEOI2015]小Z的房间 矩阵树定理
题目描述 你突然有了一个大房子,房子里面有一些房间.事实上,你的房子可以看做是一个包含n*m个格子的格状矩形,每个格子是一个房间或者是一个柱子.在一开始的时候,相邻的格子之间都有墙隔着. 你想要打通一 ...
- bzoj4031 [HEOI2015]小Z的房间——矩阵树定理
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4031 矩阵树定理的模板题(第一次的矩阵树定理~): 有点细节,放在注释里了. 代码如下: # ...
- BZOJ 4031 [HEOI2015]小Z的房间(Matrix-Tree定理)
[题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=4031 [题目大意] 你突然有了一个大房子,房子里面有一些房间. 事实上,你的房子可以看 ...
- [HEOI2015]小Z的房间(矩阵树定理学习笔记)
题目描述 你突然有了一个大房子,房子里面有一些房间.事实上,你的房子可以看做是一个包含n*m个格子的格状矩形,每个格子是一个房间或者是一个柱子.在一开始的时候,相邻的格子之间都有墙隔着. 你想要打通一 ...
- BZOJ.4031.[HEOI2015]小Z的房间(Matrix Tree定理 辗转相除)
题目链接 辗转相除解行列式的具体实现? 行列式的基本性质. //864kb 64ms //裸的Matrix Tree定理.练习一下用辗转相除解行列式.(因为模数不是质数,所以不能直接乘逆元来高斯消元. ...
- [HEOI2015] 小Z的房间 - 矩阵树定理
#include <bits/stdc++.h> using namespace std; #define int long long const int N = 105; const i ...
- bzoj 4031: 小Z的房间 矩阵树定理
bzoj 4031: 小Z的房间 矩阵树定理 题目: 你突然有了一个大房子,房子里面有一些房间.事实上,你的房子可以看做是一个包含n*m个格子的格状矩形,每个格子是一个房间或者是一个柱子.在一开始的时 ...
- bzoj 4031: [HEOI2015]小Z的房间 轮廓线dp
4031: [HEOI2015]小Z的房间 Time Limit: 10 Sec Memory Limit: 256 MBSubmit: 98 Solved: 29[Submit][Status] ...
随机推荐
- Wolf and Rabbit
http://acm.hdu.edu.cn/showproblem.php?pid=1222 Wolf and Rabbit Time Limit: 2000/1000 MS (Java/Others ...
- JDBC连接数据库(查询)的步骤
先导入jar包 代码: import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;impor ...
- 微信小程序监听input输入并取值
小程序的事件分为两种,冒泡和非冒泡事件,像<form/>的submit事件,<input/>的input事件,<scroll-view/>的scroll事件等非冒泡 ...
- [国嵌攻略][149][Yaffs2文件系统应用]
嵌入式系统自启动 MTD技术通过把Nand FLash划分成bootloader分区,Linux kernel分区和file system分区来达到自启动的效果. 配置和编译内核 1.配置Linux内 ...
- 人生苦短,我用Python 第一篇
一.变量名 自定义变量名只能用 数字.字母.下划线组成. 使用变量前,需对其先赋值 注意:1.变量名不能以数字开头: 2.不能是关键字:例如:'and', 'as', 'assert', ' ...
- PHP 获得当前页面所有变量常量的值
get_defined_vars() - 返回由所有已定义变量所组成的数组,这个函数在二次开发的时候用起来非常给力: get_defined_constants();可以返回当前的所有常量 zend的 ...
- 前端自动化构建工具Gulp简单入门
昨天听同事分享了Gulp的一些简单使用,决定自己也试一试. 一.安装 gulp是基于nodejs的,所以要先下载安装node(直接搜node,在官网下载就好了) 1.全局安装gulp npm inst ...
- CSAPP 第二章随笔
类型转换问题 (1)int -> short 二进制位高位截断,低位保持不变 (2)同类型 unsign -> sign 记住二进制位是不变的 (3)P101页提到的编译器乘法优化问题,一 ...
- MyBatis的关于批量数据操作的测试
摘录自:http://www.linuxidc.com/Linux/2012-05/60863.htm MyBatis的前身就是著名的Ibatis,不知何故脱离了Apache改名为MyBatis.My ...
- Nginx日志中的金矿 -- 好文收藏
转:http://www.infoq.com/cn/articles/nignx-log-goldmine Nginx(读作Engine-X)是现在最流行的负载均衡和反向代理服务器之一.如果你是一名中 ...