【BZOJ 4031】: [HEOI2015]小Z的房间
题目大意:
给一个n×m的网格,“.”表示可联通,求该网格可构成的生成树个数在1E9的剩余系中的结果。(n,m<=9)
题解:
忘了删注释WA了两遍……
直接建图+MartrixTree定理即可。
代码:
 #include "bits/stdc++.h"
 using namespace std;
 typedef long long ll;
 const int N=;
 ll a[N][N];
 int n,mod=1e9;
 inline ll det(){
     ll res=;
     for(int i=;i<n;++i){
         if(!a[i][i]){
             bool flag=false;
             for(int j=i+;j<n;++j){
                 if(a[j][i]){
                     flag=true;
                     for(int k=i;k<n;++k) swap(a[i][k],a[j][k]);
                     res=-res;
                     break;
                 }
             }
             if(!flag) return ;
         }
         for(int j=i+;j<n;++j){
             while(a[j][i]){
                 ll t=a[i][i]/a[j][i];
                 for(int k=i;k<n;++k){
                     a[i][k]=(a[i][k]-t*a[j][k])%mod;
                     swap(a[i][k],a[j][k]);
                 }
                 res=-res;
             }
         }
         res*=a[i][i];
         res%=mod;
     }
     if(res<)   res+=mod;
     return res;
 }
 int main(){
     int r,c;
     scanf("%d%d",&r,&c);
     char mp[][];
     int s[][],xx[]={,,-,},
                   yy[]={,-,,};
     memset(s,-,sizeof(s));
     for(int i=;i<=r;++i)
         scanf("%s",mp[i]+);
     for(int i=;i<=r;++i)
         for(int j=;j<=c;++j)   if(mp[i][j]=='.')
             s[i][j]=n++;
     for(int i=;i<=r;++i)
         for(int j=;j<=c;++j)   if(s[i][j]!=-)
             for(int k=;k<;++k){
                 int x=i+xx[k],y=j+yy[k];
                 if(x>&&y>&&x<=r&&y<=c){
                     if(s[x][y]!=-){
                         x=s[x][y],y=s[i][j];
                         a[x][y]=-,a[y][x]=-;
                         ++a[y][y];
                     }
                 }
             }
     --n;
     printf("%lld\n",det());
 }
【BZOJ 4031】: [HEOI2015]小Z的房间的更多相关文章
- bzoj 4031: [HEOI2015]小Z的房间 轮廓线dp
		
4031: [HEOI2015]小Z的房间 Time Limit: 10 Sec Memory Limit: 256 MBSubmit: 98 Solved: 29[Submit][Status] ...
 - BZOJ 4031: [HEOI2015]小Z的房间 高斯消元 MartixTree定理 辗转相除法
		
4031: [HEOI2015]小Z的房间 题目连接: http://www.lydsy.com/JudgeOnline/problem.php?id=4031 Description 你突然有了一个 ...
 - 【刷题】BZOJ 4031 [HEOI2015]小Z的房间
		
Description 你突然有了一个大房子,房子里面有一些房间.事实上,你的房子可以看做是一个包含n*m个格子的格状矩形,每个格子是一个房间或者是一个柱子.在一开始的时候,相邻的格子之间都有墙隔着. ...
 - BZOJ 4031 [HEOI2015]小Z的房间(Matrix-Tree定理)
		
[题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=4031 [题目大意] 你突然有了一个大房子,房子里面有一些房间. 事实上,你的房子可以看 ...
 - BZOJ 4031 HEOI2015 小Z的房间 基尔霍夫矩阵+行列式+高斯消元 (附带行列式小结)
		
原题链接:http://www.lydsy.com/JudgeOnline/problem.php?id=4031 Description 你突然有了一个大房子,房子里面有一些房间.事实上,你的房子可 ...
 - BZOJ 4031: [HEOI2015]小Z的房间 Matrix-Tree定理
		
题目链接: http://www.lydsy.com/JudgeOnline/problem.php?id=4031 题解: Matrix-tree定理解决生成树计数问题,其中用到高斯消元法求上三角矩 ...
 - BZOJ:4031: [HEOI2015]小Z的房间
		
Time Limit: 10 Sec Memory Limit: 256 MBSubmit: 1103 Solved: 536[Submit][Status][Discuss] Descripti ...
 - BZOJ 4031: [HEOI2015]小Z的房间 [矩阵树定理 行列式取模]
		
http://www.lydsy.com/JudgeOnline/problem.php?id=4031 裸题........ 问题在于模数是$10^9$ 我们发现消元的目的是让一个地方为0 辗转相除 ...
 - BZOJ.4031.[HEOI2015]小Z的房间(Matrix Tree定理 辗转相除)
		
题目链接 辗转相除解行列式的具体实现? 行列式的基本性质. //864kb 64ms //裸的Matrix Tree定理.练习一下用辗转相除解行列式.(因为模数不是质数,所以不能直接乘逆元来高斯消元. ...
 - bzoj 4031: [HEOI2015]小Z的房间【矩阵树定理】
		
是板子题,因为mod不是质数所以需要辗转相除然而并不知道为啥 高斯消元部分还不知道原理呢--先无脑背过的 #include<iostream> #include<cstdio> ...
 
随机推荐
- webpack安装使用
			
一.安装 1.安装node.js,Webpack 需要 Node.js v0.6 以上支持 2.使用npm(软件包管理 )安装webpack (1)全局安装 npm install webpac ...
 - winform 写App.config配置文件——IT轮子系列(八)
			
前言 在winform项目中,常常需要读app.config文件.如: var version = System.Configuration.ConfigurationManager.AppSetti ...
 - <h1>02_Linux学习_命令</h1>
			
帮助命令: xxx --help man xxx 列出当前目录下的目录和文件: ls ls -l ls --help ...
 - plsql使用
			
本文由jay8605162432贡献 本课重点: 1.写 SELECT 语句进行数据库查询 2.进行数学运算 3.处理空值 4.使用别名 ALIASES 5.连接列 6.在 SQL PLUS 中编辑缓 ...
 - Oracle12c中数据泵新特性之功能增强(expdp, impdp)
			
Oracle的数据泵功能在10g中被引进.本文对数据泵在12c中的增强做一个概览. 1. 禁用日志选项(DISABLE_ARCHIVE_LOGGING) Impdp的TRANSFORM参数已经扩展 ...
 - Python杂记
			
一.函数 1.numpy 模块中的nonzero函数 nonzero返回的数非零元素的下标. 如果输入是单维度的时候它的返回值只有一个:如果输入是多个维度的话,那么它的返回值也是多个维度的.并且的它的 ...
 - Solr(三)向solr-5.5.4中添加数据
			
Solr添加数据 一 首先在创建好的CORE中添加自己需要的Field(可以理解为表的字段) 1 切换到配置Field的文件目录,编辑配置Field的文件 managed-schema cd /usr ...
 - Effective C++ 读书笔记(39-45)
			
条款三十九:明智而审慎的使用private继承 1.C++裁定凡是独立(非附属)对象都必须有非零大小. class Empty{};//没有数据,所以其对象应该不使用任何内存 class HoldAn ...
 - MySQL索引的使用
			
1.创建和查看索引 所谓普通索引,就是在创建索引时,不附加任何限制条件(唯一.非空等限制).该类型的索引可以创建在任何数据类型的字段上. (1)创建表时,创建普通索引 语法: 例子: (2)在已经存在 ...
 - Django+xadmin打造在线教育平台(九)
			
目录 在线教育平台(一) 在线教育平台(二) 在线教育平台(三) 在线教育平台(四) 在线教育平台(五) 在线教育平台(六) 在线教育平台(七) 在线教育平台( ...