4031: [HEOI2015]小Z的房间

Time Limit: 10 Sec   Memory Limit: 256 MB
Submit: 625   Solved: 307
[ Submit][ Status][ Discuss]

Description

你突然有了一个大房子,房子里面有一些房间。事实上,你的房子可以看做是一个包含n*m个格子的格状矩形,每个格子是一个房间或者是一个柱子。在一开始的时候,相邻的格子之间都有墙隔着。

你想要打通一些相邻房间的墙,使得所有房间能够互相到达。在此过程中,你不能把房子给打穿,或者打通柱子(以及柱子旁边的墙)。同时,你不希望在房子中有小偷的时候会很难抓,所以你希望任意两个房间之间都只有一条通路。现在,你希望统计一共有多少种可行的方案。

Input

第一行两个数分别表示n和m。

接下来n行,每行m个字符,每个字符都会是’.’或者’*’,其中’.’代表房间,’*’代表柱子。

Output

一行一个整数,表示合法的方案数 Mod 10^9

Sample Input

3 3
...
...
.*.

Sample Output

15

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的房间相关推荐

  1. BZOJ4031: [HEOI2015]小Z的房间

    n,m<=9,n*m的网格图,相邻的.可连边,问把所有的.连成一棵树有多少方案,%1e9. 直接矩阵树,然而高斯消元时模数不是质数没法直接除,所以利用行列式的性质,某一行乘某个数加到另一行上,这 ...

  2. [SP104 HIGH]Highways [HEOI2015]小Z的房间——矩阵树定理入门

    矩阵树定理: 用于计算无向连通图的生成树个数. 计算出整张图的度数矩阵D(即Di,iD_{i,i}Di,i​表示i的度数),和邻接矩阵A(即Ai,jA_{i,j}Ai,j​表示i和j的连边的数量),然 ...

  3. P4111 [HEOI2015]小Z的房间

    P4111 [HEOI2015]小Z的房间 题目描述 详见:P4111 [HEOI2015]小Z的房间 solution Matrix-Tree裸题. 题意为求一个有障碍的网格图的生成树个数. 因此对 ...

  4. bzoj 4031: [HEOI2015]小Z的房间

    4031: [HEOI2015]小Z的房间 Time Limit: 10 Sec  Memory Limit: 256 MB Submit: 1457  Solved: 736 [Submit][St ...

  5. 【HEOI2015】【BZOJ4031】小Z的房间

    Description 你突然有了一个大房子,房子里面有一些房间.事实上,你的房子可以看做是一个包含n*m个格子的格状矩形,每个格子是一个房间或者是一个柱子.在一开始的时候,相邻的格子之间都有墙隔着. ...

  6. 【BZOJ4031】【Luogu P4111】[HEOI2015]小Z的房间

    裸的矩阵树定理.求行列式的时候答案要在中间统计,因为交换两个行会使答案取反. #include <bits/stdc++.h> using namespace std;const int ...

  7. [洛谷P4111][HEOI2015]小Z的房间

    题目大意:有一个$n\times m$的房间,一些位置是房间,另一些位置是柱子,相邻两个房间之间有墙,问有多少种方案可以打通一些墙把所有房间连成一棵树,柱子不可以打通 题解:矩阵树定理,把房间当点,墙 ...

  8. BZOJ4031——HEOI小z的房间

    题意:求某网格图生成树个数,对1e9取模 题解:题目是裸的Matrix-Tree定理,这不是我要说的重点,重点是对于这个取模的处理. 因为这不是个质数,所以不能直接乘逆元来当除法用,直接高斯消元肯定是 ...

  9. bzoj 4031 [HEOI2015]小Z的房间

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4031 见TJ:https://blog.csdn.net/fromatp/article/d ...

  10. BZOJ 4031: [HEOI2015]小Z的房间 Matrix-Tree定理

    题目链接: http://www.lydsy.com/JudgeOnline/problem.php?id=4031 题解: Matrix-tree定理解决生成树计数问题,其中用到高斯消元法求上三角矩 ...

最新文章

  1. 实战:基于OpenCV进行长时间曝光(内含彩蛋)
  2. linux c++开发问题汇总
  3. PAT甲级1043 Is It a Binary Search Tree :[C++题解]判断二叉搜索树BST、给定前序序列和中序序列
  4. asp.net linq查询环境搭建
  5. vue 设置 input 为不可以编辑
  6. 毕业设计(论文)-c++小型ftp服务器系统【毕业论文】.doc,毕业设计(论文)-C++小型FTP服务器系统.doc...
  7. mongodb创建用户和密码
  8. jwt的token自动续约_JWT(JSON Web Token)自动延长到期时间
  9. 蓝桥杯c语言a组省赛试题及答案,2016-蓝桥杯-省赛-C语言大学A组全部真题.doc
  10. java界面编辑教程_java程序设计基础教程第六章图形用户界面编辑.docx
  11. 鸿蒙的应用列表,图解鸿蒙列表组件ListContainer
  12. python的格式化输出学号_安利三个关于Python字符串格式化进阶知识
  13. (日常搬砖)数据集标注格式转换:txt转xml(VOC格式)
  14. HDU1251 统计难题 trie树
  15. 【原理分析】细说SpringBoot的自动装配原理
  16. java B2B2C Springcloud电子商城系统- Gateway初体验
  17. 任务调度系统就该这么设计(万能通用),稳的一批!
  18. NBMA网络OSPF路由协议配置
  19. 万物互联背景下的边缘计算安全需求与挑战
  20. 使用JSONObject 读取 jason对象中的key

热门文章

  1. 【读过的书】《月亮与六便士》
  2. 中国新的AI警察局将不会有人类
  3. android gpu 2d加速,强制使用GPU加速 对Android设备加速画面显示有效吗
  4. AI虚拟主播软件系统 搭建24小时不间断运营的数字人直播间的操作教程分享
  5. 【北京】安全研究员/工程师-20-35K,人体工程学座椅坐等你来~
  6. ValueError: Worksheet named ‘sheet1‘ not found
  7. PANTONE潘通公布2020年度代表色!
  8. 脊髓压迫症的治疗原则
  9. cartographer 安装及报错
  10. 泛微OA-E9和用友NCC单据接口对接