【HEOI2015】小Z的房间

4、设备树的处理(1) 其实到第4节才写设备树的问题完全是因为忘记了,之前有一个版本是先关闭了设备树的,习惯性的认为设备树已经处理完了,失误了!!!前文说过,这个系统是依着荣品的开发板和核心板来的,使用的是5.1内核的SDK。它的SDK里是开发板全功能的,所以设备树也是的。 阅读详情

时间限制 : 1000 MS 空间限制 : 265536 KB

问题描述

你突然有了一个大房子,房子里面有一些房间。事实上,你的房子可以看做是一个包含n*m个格子的格状矩形,每个格子是一个房间或者是一个柱子。在一开始的时候,相邻的格子之间都有墙隔着。
你想要打通一些相邻房间的墙,使得所有房间能够互相到达。在此过程中,你不能把房子给打穿,或者打通柱子(以及柱子旁边的墙)。同时,你不希望在房子中有小偷的时候会很难抓,所以你希望任意两个房间之间都只有一条通路。现在,你希望统计一共有多少种可行的方案。

输入格式

第一行两个数分别表示n和m。
接下来n行,每行m个字符,每个字符都会是’.’或者’’,其中’.’代表房间,’’代表柱子。

输出格式

一行一个整数,表示合法的方案数 Mod 10^9

样例输入

3 3
…
…
.*.

样例输出

15

提示

对于前100%的数据,n,m<=9

题解

算是生成树计数的一道板题了吧,然而也有一些细节需要注意……
1.不满足条件的点(柱子)一定不能放到基尔霍夫矩阵里去(不要笑我,我是蒟蒻……)
2.本题模数不是质数,不满足费马小定理,要用辗转相除的思想解高斯消元。

代码

#include<stdio.h>
#include<algorithm>
#include<iostream>
#include<cstdlib>
#include<cstring>
#include<cmath>
using namespace std;
typedef long long ll;
const ll mod=1e9;
ll n,m,ans=1,tot,id[15][15],G[105][105],dx[4]={0,0,1,-1},dy[4]={1,-1,0,0};
char s[15][15];
void Gauss(ll n)
{
    bool flag=false;
    for(ll i=1;i<=n;i++)
    {
        for(ll j=i+1;j<=n;j++)
            while(G[j][i])
            {
                ll t=G[i][i]/G[j][i];
                for(ll k=i;k<=n;k++) G[i][k]=(G[i][k]-t*G[j][k]%mod+mod)%mod;
                swap(G[i],G[j]),flag^=1;
            }
        ans=ans*G[i][i]%mod;
    }
    if(flag) ans=mod-ans;
    ans=(ans%mod+mod)%mod;
}
int main()
{
    scanf("%lld%lld",&n,&m);
    for(ll i=1;i<=n;i++) scanf("%s",s[i]+1);
    for(ll i=1;i<=n;i++)
        for(ll j=1;j<=m;j++)
            if(s[i][j]=='.') id[i][j]=++tot;
    for(ll i=1;i<=n;i++)
        for(ll j=1;j<=m;j++)
            if(s[i][j]=='.')
            {
                ll t=id[i][j];
                for(ll k=0;k<4;k++)
                {
                    ll tx=i+dx[k],ty=j+dy[k];
                    if(tx>0&&ty>0&&tx<=n&&ty<=m&&s[tx][ty]=='.') G[t][id[tx][ty]]--,G[t][t]++;
                }
            }
    Gauss(tot-1);
    printf("%lld\n",ans);
    return 0;
}
pcie硬件时序分析实战(PHY层眼图测量)​ PCIe高速接口的信号完整性(SI)直接影响系统带宽和稳定性。其中,​。 阅读详情

相关推荐

基于Simulink的防空导弹六自由度弹道建模与仿真实战

本文详细介绍了基于Simulink的防空导弹六自由度弹道建模与仿真方法。通过分析导弹动力学原理、Simulink环境配置、气动力建模、推进与控制系统设计等关键环节,提供了一套完整的实战指南。文章特别强调了六自由度模型在防空导弹仿真中的重要性,并分享了常见问题排查与优化建议,为相关领域工程师提供实用参考。

apple5的专栏 867

【HEOI2015】【BZOJ4031】小Z的房间

Description你突然有了一个大房子,房子里面有一些房间。事实上,你的房子可以看做是一个包含n*m个格子的格状矩形,每个格子是一个房间或者是一个柱子。在一开始的时候,相邻的格子之间都有墙隔着。你想要打通一些相邻房间的墙,使得所有房间能够互相到达。在此过程中,你不能把房子给打穿,或者打通柱子(以及柱子旁边的墙)。同时,你不希望在房子中有小偷的时候会很难抓,所以你希望任意两个房间之间都只有一条通路

CreationAugust is 14 years old forever 1091

BL0910-从零到一:多路交/直流电能计量的实战配置与校准

本文详细介绍了BL0910芯片在多路交直流电能计量中的实战应用。从硬件连接、SPI通信配置,到软件初始化、核心寄存器设置,再到偏置与增益校准,提供了完整的配置与校准指南。文章重点阐述了直流测量模式的切换要点及数据读取的工程化处理,帮助开发者快速实现高精度、多通道的电能监控方案。

rice5的博客 561

acm-矩阵树定理入门

引言 矩阵树定理是主要为了解决生成树计数的问题,生成树计数分为无向图计数以及有向图计数。除此之外,变元矩阵树定理还能够求解生成树边权积的和。 本文会先给出矩阵树定理的基本和扩展内容,然后给出关于定理的详细证明,最后是相关的习题及讲解。 定理内容 生成树计数 无向图 对于一般无向图而言,将图中的自环的边去除以后,计算出满足如下条件的基尔霍夫(Kirchhoff)矩阵: Li,j={i点度数,if i=ji与j连边数的相反数,if i≠j\mathbf{L_{i,j} = \begin{

qq_30361651的博客 432

IoT 平台架构全景图:从设备到 AI 的完整技术体系深度解析

随着物联网设备规模进入百万级时代,IoT 平台架构已经从简单的设备接入系统演变为完整的数据平台。本文从系统架构师视角,深度解析 IoT 平台的完整技术体系,包括设备接入、MQTT 通信、消息流平台、数据平台与 AI 决策系统,并结合主流云平台实践,构建从设备到 AI 的完整 AIoT 架构认知。

moton2017的博客 856

MOOS-ivp 实验三 MOOS简介(3)

MOOS-ivp 实验三 MOOS简介(3) 继上一篇文章继续对实验进行记录 提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录MOOS-ivp 实验三 MOOS简介(3)六、A Simple Example with pXRelay1.pXRelay基本使用2.pXRelay简单例子3.pXRelay实验七、First Experiments in Modifying MOOS App Code1.下载一个MOOS模板文件2.打开MOOS模板文件总结 六、A Simple E

weixin_44151170的博客 2534

[HEOI2015] 小Z的房间

题目描述: 造房子. 题目分析: 根据条件连边,上矩阵树统计就好了 题目链接: Luogu 4111 BZOJ 4031 Ac 代码: #include &lt;cstdio&gt; #include &lt;algorithm&gt; #include &lt;cmath&gt; #include &lt;iostream&gt; #include &lt;cst...

HT008的Blog 422

Linux USB Gadget框架解析:从设备模拟到驱动开发实战

USB(通用串行总线)是现代计算机系统中应用最广泛的外设连接标准,其主从动态切换的特性使其在嵌入式系统中扮演着双重角色。与I2C、SPI等固定主从架构不同,USB设备需要同时支持主机(Host)和从机(Device)两种模式,这催生了Linux内核中独特的USB Gadget框架。该框架通过分层设计,将硬件控制器驱动(UDC)、功能逻辑(Function)和配置管理(Configfs)解耦,实现了灵活的设备模拟能力。在工程实践中,开发者可以利用Gadget框架快速实现U盘、网络适配器、串口转换器等常见USB

weixin_28007513的博客 560

bzoj4031 [HEOI2015]小Z的房间

Description 你突然有了一个大房子,房子里面有一些房间。事实上,你的房子可以看做是一个包含n*m个格子的格状矩形,每个格子是一个房间或者是一个柱子。在一开始的时候,相邻的格子之间都有墙隔着。 你想要打通一些相邻房间的墙,使得所有房间能够互相到达。在此过程中,你不能把房子给打穿,或者打通柱子(以及柱子旁边的墙)。同时,你不希望在房子中有小偷的时候会很难抓,所以你希望任意两个房间之间...

olahiuj的博客 328

layui 监听单元格点击事件,获取当前点击单元格的内容以及 所在的表头内容

特别是后台的一些管理系统中 业务中还是会碰见这样的需求呢 如果你的后台使用layui写的话 在表格中 layui 也给我们提供了监听单元格的事件 但是好像不能直接获取到单元格内容个 和 对应的表头 其实 还是可以解决 换个角度使劲就会发现新的世界 不是吗 event: 'username' 在每个表头中加一个 event 属性 这样就可以监听表头事件 记住个 event 和 当前列的字段最好保持一样 table.render({ e...

业余前端的职业经历 1万+

使用 VPN 访问太理内部网相关问题总结【太原理工大学】

电脑连接 VPN,访问校园内部网相关问题总结,太原理工大学。

m0_52861684的博客 9875

[BZOJ4031][HEOI2015]小Z的房间(矩阵树定理+高斯消元)

晚上回家收拾收拾东西!虽然ATP的箱子里现在只有半箱零食。。

ADP+Pi==ATP 1556

CloudCompare源码分析之CCCoreLib模块:ICP算法(阅读经典)

CloudCompare源码分析之CCCoreLib模块:ICP算法(阅读经典)

dayuhaitang1的博客 2550

P4111 [HEOI2015]小Z的房间

P4111 [HEOI2015]小Z的房间 题目描述 详见:P4111[HEOI2015]小Z的房间 solution Matrix-Tree裸题。 题意为求一个有障碍的网格图的生成树个数。 因此对于每一个点向左边和上面的节点连边,Matrix-Tree定理求解生成树个数即可。 #include<bits/stdc++.h> using namespace std; ...

xmr_pursue_dreams的博客 249

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

bzoj 4031: [HEOI2015]小Z的房间 轮廓线dp

4031: [HEOI2015]小Z的房间 Time Limit: 10 SecMemory Limit: 256 MBSubmit: 98Solved: 29[Submit][Status][Discuss] Description 你突然有了一个大房子,房子里面有一些房间。事实上,你的房子可以看做是一个包含n*m个格子的格状矩形,每个格子是一个房间或者是一个柱子...

alex151194310的博客 139

4031: [HEOI2015]小Z的房间

4031: [HEOI2015]小Z的房间 Time Limit: 10 Sec  Memory Limit: 256 MB Submit: 874  Solved: 428 [Submit][Status][Discuss] Description 你突然有了一个大房子,房子里面有一些房间。事实上,你的房子可以看做是一个包含n*m个格子的格状矩形,每个格子是一个房间或者是一个柱子。

CRZbulabula的博客 441

bzoj4031【HEOI2015】小Z的房间

Matrix-Tree定理+高斯消元求行列式

AaronPolaris 3111

BZOJ4031: [HEOI2015]小Z的房间【矩阵树定理】

4031: [HEOI2015]小Z的房间 裸的矩阵树定理。 #include<cstdio> #include<algorithm> using namespace std; const int MOD=1e9; int n,m,cnt,Ans,mp[105][105],a[105][105];char ch[15]; void Add(int x,int y){a[x]...

XSamsara的博客 AFO 179

bzoj 4031: [HEOI2015]小Z的房间

4031: [HEOI2015]小Z的房间 Time Limit:10 SecMemory Limit:256 MBSubmit:1457Solved:736[Submit][Status][Discuss] Description 你突然有了一个大房子,房子里面有一些房间。事实上,你的房子可以看做是一个包含n*m个格子的格状矩形,每个格子是一个房间或者是一...

weixin_30677617的博客 105

bzoj 4031: [HEOI2015]小Z的房间 (矩阵树定理+高斯消元)

4031: [HEOI2015]小Z的房间 Time Limit: 10 Sec  Memory Limit: 256 MB Submit: 932  Solved: 454 [Submit][Status][Discuss] Description 你突然有了一个大房子,房子里面有一些房间。事实上,你的房子可以看做是一个包含n*m个格子的格状矩形,每个格子是一个房间或者是一个柱子。

clover_hxy的博客 546

[HEOI2015]小Z的房间

Description 你突然有了一个大房子,房子里面有一些房间。事实上,你的房子可以看做是一个包含n*m个格子的格状矩形,每个格子是一个房间或者是一个柱子。在一开始的时候,相邻的格子之间都有墙隔着。 你想要打通一些相邻房间的墙,使得所有房间能够互相到达。在此过程中,你不能把房子给打穿,或者打通柱子(以及柱子旁边的墙)。同时,你不希望在房子中有小偷的时候会很难抓,所以你希望任意两...

aoanping0730的博客 165

【bzoj4031】[HEOI2015]小Z的房间 解题报告

【bzoj4031】[HEOI2015]小Z的房间 Description 你突然有了一个大房子,房子里面有一些房间。事实上,你的房子可以看做是一个包含\(n*m\)个格子的格状矩形,每个格子是一个房间或者是一个柱子。在一开始的时候,相邻的格子之间都有墙隔着。 你想要打通一些相邻房间的墙,使得所有房间能够互相到达。在此过程中,你不能把房子给打穿,或者打通柱子(以及柱子旁边的墙)。同时,你不希望在房...

weixin_30265171的博客 94
上一篇: 【伪语法基础】输入输出练习2
下一篇: 【Shoi2016】黑暗前的幻想乡
StrideTG
博客等级 码龄9年 4粉丝 38原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值