题意:

定义4种管道,给你n*m的图,问你在图上放管道不泄露的方法数有多少种。

思路:

我们来考虑这样一个问题,如果我们在某行某列上放了一个已知的管道,那么该行方向上的管道和该列方向上的管道都已经确定了。如下图,两杆表示这里有水管。

所以我们可以定义一个r行数组来记录该行行首的水管放置情况-1表示水管在左边、0表示该行还未放置管道,+1表示水管在右边,同理定义一个c列数组。然后就是得一行一行地输入(因为这里n*m<=3*1e5但是没有给我n,m的具体范围)。最后答案为2^(r==0的行+c==0的列)(因为如果一行未被确定,那么该行就有2种情况,同理列)。

#include<cstdio>
#include<cstring>
typedef __int64 LL;const int MAX=500005;
int r[MAX],c[MAX];
int n,m;
char s[MAX];int main(){scanf("%d%d",&n,&m);memset(r,0,sizeof(r));memset(c,0,sizeof(c));bool flag=true;for(int i=0;i<n;i++){scanf("%s",s);if(flag==false) continue;for(int j=0;j<m;j++){if(s[j]=='1'){if(r[i]==0){if(j%2==0) r[i]=-1;else r[i]=1;}else{if(j%2==0&&r[i]!=-1){flag=false;break;}else if(j%2==1&&r[i]!=1){flag=false;break;}}if(c[j]==0){if(i%2==0) c[j]=-1;else c[j]=1;}else{if(i%2==0&&c[j]!=-1){flag=false;break;}else if(i%2==1&&c[j]!=1){flag=false;break;}}}if(s[j]=='2'){if(r[i]==0){if(j%2==0) r[i]=-1;else r[i]=1;}else{if(j%2==0&&r[i]!=-1){flag=false;break;}else if(j%2==1&&r[i]!=1){flag=false;break;}}if(c[j]==0){if(i%2==0) c[j]=1;else c[j]=-1;}else{if(i%2==0&&c[j]!=1){flag=false;break;}else if(i%2==1&&c[j]!=-1){flag=false;break;}}}if(s[j]=='3'){if(r[i]==0){if(j%2==0) r[i]=1;else r[i]=-1;}else{if(j%2==0&&r[i]!=1){flag=false;break;}else if(j%2==1&&r[i]!=-1){flag=false;break;}}if(c[j]==0){if(i%2==0) c[j]=1;else c[j]=-1;}else{if(i%2==0&&c[j]!=1){flag=false;break;}else if(i%2==1&&c[j]!=-1){flag=false;break;}}}if(s[j]=='4'){if(r[i]==0){if(j%2==0) r[i]=1;else r[i]=-1;}else{if(j%2==0&&r[i]!=1){flag=false;break;}else if(j%2==1&&r[i]!=-1){flag=false;break;}}if(c[j]==0){if(i%2==0) c[j]=-1;else c[j]=1;}else{if(i%2==0&&c[j]!=-1){flag=false;break;}else if(i%2==1&&c[j]!=1){flag=false;break;}}}}}LL ans=1;int num=0;for(int i=0;i<n;i++){if(r[i]==0) num++;}for(int j=0;j<m;j++){if(c[j]==0) num++;}for(int i=0;i<num;i++){ans=(ans*2)%(1000003);}if(flag) printf("%I64d\n",ans);else printf("0\n");return 0;
}

Codeforces 115C Plumber相关推荐

  1. CodeForces 115C. Plumber 解题报告

    题目 题意: n×m的的矩阵里,每个格子都有一个水管,并且水管是给出的4种形状的一个.有一些地方水管已经确定了,有一些还没有.若两个相邻的水管彼此没有连通则为泄漏.求不泄漏的方案数,不要求水管全部连成 ...

  2. CodeForces 375D Tree and Queries

    传送门:https://codeforces.com/problemset/problem/375/D 题意: 给你一颗有根树,树上每个节点都有其对应的颜色,有m次询问,每次问你以点v为父节点的子树内 ...

  3. 「日常训练」Bad Luck Island(Codeforces Round 301 Div.2 D)

    题意与分析(CodeForces 540D) 是一道概率dp题. 不过我没把它当dp做... 我就是凭着概率的直觉写的,还好这题不算难. 这题的重点在于考虑概率:他们喜相逢的概率是多少?考虑超几何分布 ...

  4. 【codeforces 812C】Sagheer and Nubian Market

    [题目链接]:http://codeforces.com/contest/812/problem/C [题意] 给你n个物品; 你可以选购k个物品;则 每个物品有一个基础价值; 然后还有一个附加价值; ...

  5. CodeForces 获得数据

    针对程序的输出可以看见 CodeForces :当输入.输出超过一定字符,会隐藏内容 所以:分若干个程序进行输入数据的获取 1. 1 for (i=1;i<=q;i++) 2 { 3 scanf ...

  6. codeforces水题100道 第二十七题 Codeforces Round #172 (Div. 2) A. Word Capitalization (strings)...

    题目链接:http://www.codeforces.com/problemset/problem/281/A 题意:将一个英文字母的首字母变成大写,然后输出. C++代码: #include < ...

  7. CodeForces 595A

    题目链接: http://codeforces.com/problemset/problem/595/A 题意: 一栋楼,有n层,每层有m户,每户有2个窗户,问这栋楼还有多少户没有睡觉(只要一个窗户灯 ...

  8. codeforces A. Jeff and Digits 解题报告

    题目链接:http://codeforces.com/problemset/problem/352/A 题目意思:给定一个只有0或5组成的序列,你要重新编排这个序列(当然你可以不取尽这些数字),使得这 ...

  9. Codeforces Round #506 (Div. 3)

    Codeforces Round #506 (Div. 3) 实习期间事不多,对div3 面向题解和数据编程了一波 A. Many Equal Substrings 题目链接 A题就是找后缀和前缀重合 ...

最新文章

  1. 服务器插显示器黑的,服务器插显示器不显示
  2. (Android Studio)ActionBar's Theme/Style [ActionBar主题风格修改]
  3. 故障排查:是什么 导致了客户端批量心跳超时掉线
  4. GRPC协议的相关原理
  5. 生命大发的意义 BY 几米
  6. UI标签库专题十:JEECG智能开发平台 Form(form标签)
  7. Linux_异常_01_CentOS7无法ping 百度
  8. 《深入浅出MFC》读书笔记
  9. 3d slicer matlab,基于3D+slicer的医学影像分割算法及其应用研究.pdf
  10. firewalld系列一:自定义zone与ipset
  11. 36. linux系统日志在哪里看
  12. 【ParaView教程】2.13 保存截图和保存动画
  13. 微信消息推送神器【一封传话】介绍,让消息推送更简单
  14. H5经纬度百度定位不准问题
  15. c语言程序冒号的作用是什么,C语言里面的冒号
  16. 设计模式-策略模式-java-中文版
  17. python中可选参数如何指定_Python可选参数
  18. Fluent Meshing生成interface
  19. 分享mac主机通过虚拟机中parallels连接内网
  20. FPGA实现AD9361数据接口逻辑

热门文章

  1. AutoAugment介绍及论文解析
  2. 租的服务器系统盘满了该怎么办,系统盘满了怎么清理?
  3. 2021年晋城二中高考成绩查询,太骄傲 | 晋城八大高中高考成绩全记录!请为晋城学子点赞!...
  4. image 微信小程序flex_微信小程序入门教程之二:页面样式
  5. Visio 2010、2013中找不到“拆分”,“联合”,“相交”等开发工具
  6. 开源中最好的Web开发的资源 ——来自CoolShell.cn
  7. 47 lvs-nat/dr
  8. 成绩查询显示服务器未授权,华燕机动车驾驶人考试远程监控系统
  9. C#之 十九 使用WinForm控件
  10. 超越云存储,用一勺蛋白质保存整个图书馆