题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4031

矩阵树定理的模板题(第一次的矩阵树定理~);

有点细节,放在注释里了。

代码如下:

#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
typedef long long ll;
int const mod=1e9;
int n,m,a[][],d[][],sid[][],tot,num[][];
ll ans=;
void add(int x,int y)
{
d[x][x]++; d[y][y]++;
sid[x][y]=; sid[y][x]=;
}
void gauss()
{
int fl=;
for(int i=;i<=tot;i++)
{
int nw=i;//
for(int j=i+;j<=tot;j++)
if(a[j][i]>a[nw][i])nw=j;
if(nw!=i)
{
fl^=;
for(int j=i;j<=tot;j++)swap(a[i][j],a[nw][j]);
}
for(int j=i+;j<=tot;j++)//上三角而非对角线
while(a[j][i])
{
ll tmp=a[i][i]/a[j][i];
for(int k=i;k<=tot;k++)
{
ll tp=a[i][k]; a[i][k]=a[j][k];
a[j][k]=((tp-a[j][k]*tmp)%mod+mod)%mod;
}
fl^=;
}
(ans*=a[i][i])%=mod;
}
if(fl)ans=-ans;
ans=((ans%mod)+mod)%mod;
}
int main()
{
scanf("%d%d",&n,&m);
char ch[][];
for(int i=;i<=n;i++)
{
int nw=i%,pr=!nw;
scanf("%s",ch[nw]+);
for(int j=;j<=m;j++)
{
if(ch[nw][j]=='*')continue;//!!!
tot++; num[nw][j]=tot;
if(ch[nw][j-]=='.')add(tot,num[nw][j-]);
if(ch[pr][j]=='.')add(tot,num[pr][j]);
}
}
for(int i=;i<=tot;i++)
for(int j=;j<=tot;j++)
a[i][j]=(d[i][j]-sid[i][j]+mod)%mod;
tot--;//
gauss();
printf("%lld",ans);
return ;
}

bzoj4031 [HEOI2015]小Z的房间——矩阵树定理的更多相关文章

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

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

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

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

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

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

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

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

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

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

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

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

  7. LG4111/LOJ2122 「HEOI2015」小Z的房间 矩阵树定理

    问题描述 LG4111 题解 矩阵树定理板子题. \(\mathrm{Code}\) #include<bits/stdc++.h> using namespace std; #defin ...

  8. BZOJ4031 [HEOI2015]小Z的房间 【矩阵树定理 + 高斯消元】

    题目链接 BZOJ4031 题解 第一眼:这不裸的矩阵树定理么 第二眼:这个模\(10^9\)是什么鬼嘛QAQ 想尝试递归求行列式,发现这是\(O(n!)\)的.. 想上高斯消元,却又处理不了逆元这个 ...

  9. bzoj4031 [HEOI2015]小Z的房间

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

随机推荐

  1. Python之模块和包导入

    Python之模块和包导入 模块导入: 1.创建名称空间,用来存放模块XX.py中定义的名字 2.基于创建的名称空间来执行XX.py. 3.创建名字XX.py指向该名称空间,XX.名字的操作,都是以X ...

  2. Ubuntu中Python3虚拟环境的搭建

    1.环境准备 首先请自行安装好Python3和pip3(一般Ubuntu是自带Python3的,可以通过sudo apt-get install python3-pip命令来安装pip3) 安装完成后 ...

  3. Spring Quartz 和 Spring Task使用比较

    Quartz 和 Spring Task执行时间对比: 1. Quartz同步模式:一个任务的两次执行的时间间隔是:“执行时间”和“trigger的设定间隔”的最大值 2. Task默认同步模式:一个 ...

  4. 集训第五周动态规划 J题 括号匹配

    Description We give the following inductive definition of a “regular brackets” sequence: the empty s ...

  5. 60. Spring Boot写后感【从零开始学Spring Boot】

    从2016年4月15日到2016年7月20日经历长达3个月的时间,[从零开始学习Spring Boot]系列就要告一段落了.国内的各种资源都比较乱或者是copy 来copy去的,错了也不加以修正下,导 ...

  6. 如何使用Mysql Workbench导出一整个sql文件,sql包?

    1. 点击Management ; 2. 点击Data Export 3. 点击需要备份的数据名字并打钩 1是点击查看2是选择 4. 在右下方选择要要备份的类型(框架,数据,框架+数据) 5. 选择你 ...

  7. 开发辅助网站---programcreek

    开发中让我们事半功倍的工具网站,开发中经常遇到api如何使用,很好的解决这个问题.java代码api案例网,提供最简单的demo,很不错分享一下,大家可以用用. http://www.programc ...

  8. 百度音乐免费API接口

    音乐分类: 1.新歌榜,2.热歌榜,11.摇滚榜,12.爵士,16.流行21.欧美金曲榜,22.经典老歌榜,23.情歌对唱榜,24.影视金曲榜,25.网络歌曲榜 说明:百度music web版全接口h ...

  9. 中国福利彩票,牛B,开奖和数据传输有什么关系?

    昨天,由中国教育电视台直播的福利彩票“双色球”15011期开奖,在没有事先预告的情况下突然取消.晚上11点40分左右,中国福利彩票发行管理中心唯一指定网络信息发布媒体——中彩网官方微博出乎意料地在网上 ...

  10. Less Time, More profit 最大权闭合子图(最大流最小割)

    The city planners plan to build N plants in the city which has M shops. Each shop needs products fro ...