bzoj 4031: [HEOI2015]小Z的房间 矩阵树定理
来源:互联网 发布:nginx body filter 编辑:程序博客网 时间:2024/04/30 11:00
题意
给出一个n*m的方阵,一些格子是空地一些是柱子。格子间的邻边看做边,问空地的生成树数量。
n<=9
分析
权当省选前复习一波矩阵树定理了。
一开始忘了行初等变换要让行列式换符号了。
代码
#include<iostream>#include<cstdio>#include<cstdlib>#include<cstring>#include<algorithm>using namespace std;typedef long long LL;const int N=10;const int MOD=1000000000;int n,m,sz,num[N][N],a[N*N][N*N],f;char ch[N];void gauss(int n){ f=1; for (int i=1;i<=n;i++) { if (!a[i][i]) return; for (int j=i+1;j<=n;j++) if (a[j][i]) { while (a[j][i]) { f=-f; int w=a[i][i]/a[j][i]; for (int k=i;k<=n;k++) swap(a[i][k],a[j][k]); for (int k=i;k<=n;k++) a[j][k]=(a[j][k]-(LL)a[i][k]*w%MOD)%MOD; } } }}int main(){ scanf("%d%d",&n,&m); for (int i=1;i<=n;i++) { scanf("%s",ch+1); for (int j=1;j<=m;j++) if (ch[j]=='.') num[i][j]=++sz; } for (int i=1;i<=n;i++) for (int j=1;j<=m;j++) if (num[i][j]) { if (j<m&&num[i][j+1]) a[num[i][j]][num[i][j]]++,a[num[i][j+1]][num[i][j+1]]++,a[num[i][j]][num[i][j+1]]--,a[num[i][j+1]][num[i][j]]--; if (i<n&&num[i+1][j]) a[num[i][j]][num[i][j]]++,a[num[i+1][j]][num[i+1][j]]++,a[num[i][j]][num[i+1][j]]--,a[num[i+1][j]][num[i][j]]--; } gauss(sz-1); int ans=1; for (int i=1;i<sz;i++) ans=(LL)ans*a[i][i]%MOD; printf("%d",(ans*f+MOD)%MOD); return 0;}
0 0
- bzoj 4031: [HEOI2015]小Z的房间 矩阵树定理
- BZOJ 4031: [HEOI2015]小Z的房间 矩阵树定理
- bzoj 4031: [HEOI2015]小Z的房间 (矩阵树定理+高斯消元)
- BZOJ 4031([HEOI2015]小Z的房间-矩阵树定理+辗转相除)
- BZOJ 4031 HEOI2015 小Z的房间 Matrix-Tree定理
- 【bzoj4031】 HEOI2015小Z的房间 矩阵树定理
- 【BZOJ 4031】[HEOI2015]小Z的房间 基尔霍夫矩阵
- BZOJ 4031: [HEOI2015]小Z的房间
- [BZOJ4031][HEOI2015]小Z的房间(矩阵树定理+高斯消元)
- BZOJ 4031: [HEOI2015]小Z的房间 Matrix-Tree定理+辗转相除法求行列式的值(高斯消元)
- 4031: [HEOI2015]小Z的房间
- 【HEOI2015】【BZOJ4031】小Z的房间
- bzoj4031【HEOI2015】小Z的房间
- bzoj4031 [HEOI2015]小Z的房间
- 【HEOI2015】bzoj4031 小z的房间
- BZOJ4031: [HEOI2015]小Z的房间
- bzoj4031: [HEOI2015]小Z的房间
- bzoj 4031 小z的房间
- [转]POJ 1001 Exponentiation Java大数处理高精度小数
- NGUI学习笔记(六):ScrollView、Grid和Table
- 【转载】在erlang项目中使用protobuf
- CodeForces 627 B.Factory Repairs(BIT)
- 如何用递归算法判断一个数组是否递增
- bzoj 4031: [HEOI2015]小Z的房间 矩阵树定理
- android获取周围基站信息
- 对象反序列化时,如果父类未实现序列化接口,则反序列出的对象会再次调用父类的构造函数来完成属于父类那部分内容的初始化
- 第六天-网页的head制作——明天继续写下面的
- bash,awk分离出文件夹目录下最后的文件
- 机试算法题(1)--排序算法
- Java设计模式之状态模式
- 一个BOM头引发的血案!!!
- springmvc之文件上传MultipartResolver