问题描述

LG4111


题解

矩阵树定理板子题。


\(\mathrm{Code}\)

#include<bits/stdc++.h>
using namespace std; #define int long long template <typename Tp>
void read(Tp &x){
x=0;char ch=1;int fh;
while(ch!='-'&&(ch<'0'||ch>'9')) ch=getchar();
if(ch=='-'){
fh=-1;ch=getchar();
}
else fh=1;
while(ch>='0'&&ch<='9'){
x=(x<<1)+(x<<3)+ch-'0';
ch=getchar();
}
x*=fh;
} int tot; void fr(int &x){
char ch=1;
while(ch!='.'&&ch!='*') ch=getchar();
if(ch=='.') x=++tot;
else x=0;
} int n,m;
int a[12][12],f[107][107]; int ans; const int mod=1000000000; void add(int x,int y){
if(x>y) return;
f[x][x]++,f[y][y]++;
f[x][y]--,f[y][x]--;
} void guass(){
ans=1;
for(int i=1;i<tot;i++){
for(int j=i+1;j<tot;j++){
while(f[j][i]){
int t=f[i][i]/f[j][i];
for(int k=i;k<tot;k++)
f[i][k]=(f[i][k]-t*f[j][k]+mod)%mod;
swap(f[i],f[j]);
ans=-ans;
}
}
ans=ans*f[i][i]%mod;
}
ans=(ans+mod)%mod;
} signed main(){
read(n);read(m);
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
fr(a[i][j]);
}
}
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
int x=a[i][j],y;
if(!x) continue;
if(y=a[i][j-1]) add(x,y);
if(y=a[i][j+1]) add(x,y);
if(y=a[i-1][j]) add(x,y);
if(y=a[i+1][j]) add(x,y);
}
}
// for(int i=1;i<=tot;i++){
// for(int j=1;j<=tot;j++){
// cout<<f[i][j]<<" ";
// }
// cout<<endl;
// }
guass();
printf("%lld\n",ans);
return 0;
}

LG4111/LOJ2122 「HEOI2015」小Z的房间 矩阵树定理的更多相关文章

  1. bzoj 4031: 小Z的房间 矩阵树定理

    bzoj 4031: 小Z的房间 矩阵树定理 题目: 你突然有了一个大房子,房子里面有一些房间.事实上,你的房子可以看做是一个包含n*m个格子的格状矩形,每个格子是一个房间或者是一个柱子.在一开始的时 ...

  2. 【LOJ】#2122. 「HEOI2015」小 Z 的房间

    题解 又是一道取模不给质数的毒瘤矩阵树题 不会写分数类--然后发现了网上过于神仙的题解类似与辗转相除的这样把某一个位置消成0 orz 代码 #include <bits/stdc++.h> ...

  3. BZOJ 4031: [HEOI2015]小Z的房间 [矩阵树定理 行列式取模]

    http://www.lydsy.com/JudgeOnline/problem.php?id=4031 裸题........ 问题在于模数是$10^9$ 我们发现消元的目的是让一个地方为0 辗转相除 ...

  4. [HEOI2015]小Z的房间(矩阵树定理学习笔记)

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

  5. 【bzoj4031】[HEOI2015]小Z的房间 矩阵树定理

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

  6. bzoj4031 [HEOI2015]小Z的房间——矩阵树定理

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4031 矩阵树定理的模板题(第一次的矩阵树定理~): 有点细节,放在注释里了. 代码如下: # ...

  7. BZOJ 4031: [HEOI2015]小Z的房间 (矩阵树定理 板题)

    背结论 : 度-邻 CODE1 O(n3logn)O(n^3logn)O(n3logn) #include <bits/stdc++.h> using namespace std; typ ...

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

    #include <bits/stdc++.h> using namespace std; #define int long long const int N = 105; const i ...

  9. 【BZOJ4031】【HEOI2015】小Z的房间 [Matrix-Tree][行列式]

    小Z的房间 Time Limit: 10 Sec  Memory Limit: 256 MB[Submit][Status][Discuss] Description 你突然有了一个大房子,房子里面有 ...

随机推荐

  1. 调用百度语音AI实现语音的识别和合成

    #coding:utf-8 ## 先去ffmpeg官网下载(https://ffmpeg.zeranoe.com/builds/),好了之后解压缩,配一下环境变量 ## 打开cmd,运行命令,安装如下 ...

  2. 怎么解决 hash 冲突

    开放定址法: 线性探测再散列 二次探测再散列 伪随机 再hash: 同时构造,多个不同的hash函数 链地址: 链表, 建立公共溢出区: 分为基本表和溢出表两个部分 开放散列(open hashing ...

  3. eclipse拉取git项目 Read timed out after 30,000 ms

    点击 eclipse -> Window -> Preferences -> Team ->git   在git选项里有Remote connection timeout ,默 ...

  4. cartographer 3D scan matching 理解

    cartographer 3D scan matching没有论文和其它资料,因此尝试通过源码理解其处理方法,理解不当之处还请指正. 目录: 0.2D 匹配方法简介 1.real time corre ...

  5. Mybatis和Hibernate框架的区别

    Mybatis和Hibernate框架的区别1 简单简介 1.1 Hibernate 框架 Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,建立对象与数据 ...

  6. PHP面试题大全(值得收藏)

    PHP进阶.面试:文档.视频资源点击免费获取 一 .PHP基础部分 1.PHP语言的一大优势是跨平台,什么是跨平台? PHP的运行环境最优搭配为Apache+MySQL+PHP,此运行环境可以在不同操 ...

  7. body标签添加ontouchstart属性

    之前看别人的代码,发现他的body标签添加ontouchstart属性.即 <body ontouchstart> 上网查了一下原因,记录一下: 这个操作是进行手机端兼容处理的,防止伪类: ...

  8. 解决上一篇bean.xml中<bean>标签报错“ Error while downloading 'http://www.springframework.org/schema/beans/spring-beans.xsd........”

    在xml文件中,头部报错如题 一开始查询,说是头部少了“<?xml version="1.0" encoding="UTF-8"?>”,但是我并没有 ...

  9. 易飞审核员调用DEMO-DELPHI

    作用:我已在其他文章里提过.直接调用易飞审核员程序,易飞9全版本全模块通用. 亮点:错误直接返回错误信息,并非错误代码. 最全.最优的易飞审核员接口开发,支持个案审核员接口开发.有需要的联系本人. 唯 ...

  10. python 遍历一个数组

    list_test =[1,2,3,4,5] for i in range(0,len(list_test)): print(i) 结果是 1 2 3 4 5 注意 for i in range 是前 ...