bzoj4031 [HEOI2015]小Z的房间——矩阵树定理
题目: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的房间——矩阵树定理的更多相关文章
- 【bzoj4031】[HEOI2015]小Z的房间 矩阵树定理
题目描述 你突然有了一个大房子,房子里面有一些房间.事实上,你的房子可以看做是一个包含n*m个格子的格状矩形,每个格子是一个房间或者是一个柱子.在一开始的时候,相邻的格子之间都有墙隔着. 你想要打通一 ...
- [HEOI2015]小Z的房间(矩阵树定理学习笔记)
题目描述 你突然有了一个大房子,房子里面有一些房间.事实上,你的房子可以看做是一个包含n*m个格子的格状矩形,每个格子是一个房间或者是一个柱子.在一开始的时候,相邻的格子之间都有墙隔着. 你想要打通一 ...
- BZOJ 4031: [HEOI2015]小Z的房间 [矩阵树定理 行列式取模]
http://www.lydsy.com/JudgeOnline/problem.php?id=4031 裸题........ 问题在于模数是$10^9$ 我们发现消元的目的是让一个地方为0 辗转相除 ...
- BZOJ 4031: [HEOI2015]小Z的房间 (矩阵树定理 板题)
背结论 : 度-邻 CODE1 O(n3logn)O(n^3logn)O(n3logn) #include <bits/stdc++.h> using namespace std; typ ...
- [HEOI2015] 小Z的房间 - 矩阵树定理
#include <bits/stdc++.h> using namespace std; #define int long long const int N = 105; const i ...
- bzoj 4031: 小Z的房间 矩阵树定理
bzoj 4031: 小Z的房间 矩阵树定理 题目: 你突然有了一个大房子,房子里面有一些房间.事实上,你的房子可以看做是一个包含n*m个格子的格状矩形,每个格子是一个房间或者是一个柱子.在一开始的时 ...
- LG4111/LOJ2122 「HEOI2015」小Z的房间 矩阵树定理
问题描述 LG4111 题解 矩阵树定理板子题. \(\mathrm{Code}\) #include<bits/stdc++.h> using namespace std; #defin ...
- BZOJ4031 [HEOI2015]小Z的房间 【矩阵树定理 + 高斯消元】
题目链接 BZOJ4031 题解 第一眼:这不裸的矩阵树定理么 第二眼:这个模\(10^9\)是什么鬼嘛QAQ 想尝试递归求行列式,发现这是\(O(n!)\)的.. 想上高斯消元,却又处理不了逆元这个 ...
- bzoj4031 [HEOI2015]小Z的房间
Description 你突然有了一个大房子,房子里面有一些房间.事实上,你的房子可以看做是一个包含n*m个格子的格状矩形,每个格子是一个房间或者是一个柱子.在一开始的时候,相邻的格子之间都有墙隔着. ...
随机推荐
- 配置Mysql审计
mysql-audit.json:Mysql审计日志 插件下载地址: https://bintray.com/mcafee/mysql-audit-plugin/release/1.1.4-725#f ...
- Jquery validate自定义验证
http://www.runoob.com/jquery/jquery-plugin-validate.html addMethod(name,method,message)方法 参数 name 是添 ...
- npm run build 打包后,如何查看效果
我们用vue-cli搭建的项目执行npm build后本地打开页面空白,如果才能查看npm run build之后的结果呢 首先我们看一下提示 Tip: built files are meant t ...
- IDEA常用插件记录
让我们来记录一下常用的IDEA插件:(从其他博客中取了许多图片,出处见图片水印) 1.JRebel for IntelliJ 热部署神器2.Free MyBatis plugin 实现dao层方法与x ...
- jQuery调用WCF 说明
在项目中用过一些WCF的技术这篇文章是对以前用过的一点东西的一个梳理 一,webconfig的配置除了一般的配置外,与WCF相关的配置如下 <system.serviceModel> ...
- HDU 5458 Stability
Stability Time Limit: 2000ms Memory Limit: 102400KB This problem will be judged on HDU. Original ID: ...
- Codeforces Round #364 (Div. 2),只有A与B
A. Cards time limit per test 1 second memory limit per test 256 megabytes input standard input outpu ...
- bzoj 3173 [Tjoi2013]最长上升子序列 (treap模拟+lis)
[Tjoi2013]最长上升子序列 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 2213 Solved: 1119[Submit][Status] ...
- 【Intellij 】Intellij IDEA 添加jar包的三种方式
一.直接复制:(不推荐) 方法:直接将硬盘上的jar包复制粘贴到项目的lib目录下即可. 注意: 1.对于导入的eclipse项目,该方式添加的jar包没有任何反应,用make编译项目会报错 2.对于 ...
- 静态区间第k大(归并树)
POJ 2104为例 思想: 利用归并排序的思想: 建树过程和归并排序类似,每个数列都是子树序列的合并与排序. 查询过程,如果所查询区间完全包含在当前区间中,则直接返回当前区间内小于所求数的元素个数, ...