bzoj4031【HEOI2015】小Z的房间
4031: [HEOI2015]小Z的房间
Time Limit: 10 Sec Memory Limit: 256 MB
Submit: 625 Solved: 307
[ Submit][ Status][ Discuss]
Description
你突然有了一个大房子,房子里面有一些房间。事实上,你的房子可以看做是一个包含n*m个格子的格状矩形,每个格子是一个房间或者是一个柱子。在一开始的时候,相邻的格子之间都有墙隔着。
Input
第一行两个数分别表示n和m。
Output
一行一个整数,表示合法的方案数 Mod 10^9
Sample Input
...
...
.*.
Sample Output
HINT
对于前100%的数据,n,m<=9
Matrix-Tree定理+高斯消元求行列式
求生成树个数,直接用Matrix-Tree定理。
需要注意的是模数等于10^9,不能直接求逆元,所以在高斯消元的时候要辗转相除。
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<cmath>
#include<algorithm>
#define F(i,j,n) for(int i=j;i<=n;i++)
#define D(i,j,n) for(int i=j;i>=n;i--)
#define ll long long
#define maxn 105
#define mod 1000000000
using namespace std;
int n,m,tot;
int p[maxn][maxn],dx[4]={0,0,-1,1},dy[4]={-1,1,0,0};
ll a[maxn][maxn];
char s[maxn][maxn];
ll calc(int n)
{F(i,1,n) F(j,1,n) a[i][j]=(a[i][j]+mod)%mod;ll ans=1,f=1;F(i,1,n){F(j,i+1,n){ll x=a[i][i],y=a[j][i];while (y!=0){ll t=x/y;x%=y;swap(x,y);F(k,i,n) a[i][k]=(a[i][k]-t*a[j][k]%mod+mod)%mod;F(k,i,n) swap(a[i][k],a[j][k]);f=-f;}}if (!a[i][i]) return 0;ans=ans*a[i][i]%mod;}return (ans*f+mod)%mod;
}
int main()
{scanf("%d%d",&n,&m);F(i,1,n) scanf("%s",s[i]+1);F(i,1,n) F(j,1,m) if (s[i][j]=='.') p[i][j]=++tot;F(i,1,n) F(j,1,m) if (s[i][j]=='.') F(k,0,3){int x=i+dx[k],y=j+dy[k];if (x<1||x>n||y<1||y>m||s[x][y]=='*') continue;int u=p[i][j],v=p[x][y];a[u][u]++;a[u][v]--;}printf("%lld\n",calc(tot-1));return 0;
}
bzoj4031【HEOI2015】小Z的房间相关推荐
- BZOJ4031: [HEOI2015]小Z的房间
n,m<=9,n*m的网格图,相邻的.可连边,问把所有的.连成一棵树有多少方案,%1e9. 直接矩阵树,然而高斯消元时模数不是质数没法直接除,所以利用行列式的性质,某一行乘某个数加到另一行上,这 ...
- [SP104 HIGH]Highways [HEOI2015]小Z的房间——矩阵树定理入门
矩阵树定理: 用于计算无向连通图的生成树个数. 计算出整张图的度数矩阵D(即Di,iD_{i,i}Di,i表示i的度数),和邻接矩阵A(即Ai,jA_{i,j}Ai,j表示i和j的连边的数量),然 ...
- P4111 [HEOI2015]小Z的房间
P4111 [HEOI2015]小Z的房间 题目描述 详见:P4111 [HEOI2015]小Z的房间 solution Matrix-Tree裸题. 题意为求一个有障碍的网格图的生成树个数. 因此对 ...
- bzoj 4031: [HEOI2015]小Z的房间
4031: [HEOI2015]小Z的房间 Time Limit: 10 Sec Memory Limit: 256 MB Submit: 1457 Solved: 736 [Submit][St ...
- 【HEOI2015】【BZOJ4031】小Z的房间
Description 你突然有了一个大房子,房子里面有一些房间.事实上,你的房子可以看做是一个包含n*m个格子的格状矩形,每个格子是一个房间或者是一个柱子.在一开始的时候,相邻的格子之间都有墙隔着. ...
- 【BZOJ4031】【Luogu P4111】[HEOI2015]小Z的房间
裸的矩阵树定理.求行列式的时候答案要在中间统计,因为交换两个行会使答案取反. #include <bits/stdc++.h> using namespace std;const int ...
- [洛谷P4111][HEOI2015]小Z的房间
题目大意:有一个$n\times m$的房间,一些位置是房间,另一些位置是柱子,相邻两个房间之间有墙,问有多少种方案可以打通一些墙把所有房间连成一棵树,柱子不可以打通 题解:矩阵树定理,把房间当点,墙 ...
- BZOJ4031——HEOI小z的房间
题意:求某网格图生成树个数,对1e9取模 题解:题目是裸的Matrix-Tree定理,这不是我要说的重点,重点是对于这个取模的处理. 因为这不是个质数,所以不能直接乘逆元来当除法用,直接高斯消元肯定是 ...
- bzoj 4031 [HEOI2015]小Z的房间
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4031 见TJ:https://blog.csdn.net/fromatp/article/d ...
- BZOJ 4031: [HEOI2015]小Z的房间 Matrix-Tree定理
题目链接: http://www.lydsy.com/JudgeOnline/problem.php?id=4031 题解: Matrix-tree定理解决生成树计数问题,其中用到高斯消元法求上三角矩 ...
最新文章
- 实战:基于OpenCV进行长时间曝光(内含彩蛋)
- linux c++开发问题汇总
- PAT甲级1043 Is It a Binary Search Tree :[C++题解]判断二叉搜索树BST、给定前序序列和中序序列
- asp.net linq查询环境搭建
- vue 设置 input 为不可以编辑
- 毕业设计(论文)-c++小型ftp服务器系统【毕业论文】.doc,毕业设计(论文)-C++小型FTP服务器系统.doc...
- mongodb创建用户和密码
- jwt的token自动续约_JWT(JSON Web Token)自动延长到期时间
- 蓝桥杯c语言a组省赛试题及答案,2016-蓝桥杯-省赛-C语言大学A组全部真题.doc
- java界面编辑教程_java程序设计基础教程第六章图形用户界面编辑.docx
- 鸿蒙的应用列表,图解鸿蒙列表组件ListContainer
- python的格式化输出学号_安利三个关于Python字符串格式化进阶知识
- (日常搬砖)数据集标注格式转换:txt转xml(VOC格式)
- HDU1251 统计难题 trie树
- 【原理分析】细说SpringBoot的自动装配原理
- java B2B2C Springcloud电子商城系统- Gateway初体验
- 任务调度系统就该这么设计(万能通用),稳的一批!
- NBMA网络OSPF路由协议配置
- 万物互联背景下的边缘计算安全需求与挑战
- 使用JSONObject 读取 jason对象中的key
热门文章
- 【读过的书】《月亮与六便士》
- 中国新的AI警察局将不会有人类
- android gpu 2d加速,强制使用GPU加速 对Android设备加速画面显示有效吗
- AI虚拟主播软件系统 搭建24小时不间断运营的数字人直播间的操作教程分享
- 【北京】安全研究员/工程师-20-35K,人体工程学座椅坐等你来~
- ValueError: Worksheet named ‘sheet1‘ not found
- PANTONE潘通公布2020年度代表色!
- 脊髓压迫症的治疗原则
- cartographer 安装及报错
- 泛微OA-E9和用友NCC单据接口对接