Codeforces 1345 D - Monopole Magnets
这一场也是很神奇了,先是推迟三天,后是评测鸡崩了,unrated...
题意:每一行,每一列必须都要至少有一个s,n要可以到所有的黑格,n的上下左右如果有一个s,他就可以往那个方向移动一格,n最后不能在白格,求n最少的个数。
题解:
1、每一行每一列如果有#,#必须是连续的,否则输出-1
2、如果有一行没有#,那么至少有一列要没有#,s就可以放在交点处,否则输出-1。
3、求解连通块的个数
- 1 #include<bits/stdc++.h>
- 2 #define ll long long
- 3 using namespace std;
- 4
- 5 char a[1010][1010];
- 6 bool x[1010],y[1010]; //x记录有#的行,y记录有#的列
- 7 int dx[]={1,-1,0,0};
- 8 int dy[]={0,0,1,-1};
- 9
- 10 void dfs(int xx,int yy)
- 11 {
- 12 a[xx][yy]='.';
- 13 for(int i=0;i<4;i++){
- 14 int xxx=xx+dx[i];
- 15 int yyy=yy+dy[i];
- 16 if(a[xxx][yyy]=='#') dfs(xxx,yyy);
- 17 }
- 18 return ;
- 19 }
- 20
- 21 int main()
- 22 {
- 23 ios::sync_with_stdio(false);
- 24 cin.tie(0);
- 25 cout.tie(0);
- 26 int n,m;
- 27 cin>>n>>m;
- 28 for(int i=0;i<n;i++) cin>>a[i];
- 29 int flag=1;
- 30 for(int i=0;i<n;i++){
- 31 for(int j=0;j<m;j++){
- 32 if(a[i][j]=='#') {
- 33 if(x[i]&&j&&a[i][j-1]!='#'){
- 34 flag=0;
- 35 break;
- 36 }
- 37 if(y[j]&&i&&a[i-1][j]!='#'){
- 38 flag=0;
- 39 break;
- 40 }
- 41 x[i]=1,y[j]=1;
- 42 }
- 43 }
- 44 if(!flag) break;
- 45 }
- 46 int p=0,q=0;
- 47 for(int i=0;i<n;i++) if(!x[i]) p=1;
- 48 for(int i=0;i<m;i++) if(!y[i]) q=1;
- 49 if(p^q) flag=0; //如果有行没有# 而没有列没有#或者反过来,就输出-1.
- 50 if(!flag) {cout<<-1<<endl;return 0;}
- 51 int ans=0;
- 52 for(int i=0;i<n;i++){
- 53 for(int j=0;j<m;j++){
- 54 if(a[i][j]=='#') ans++,dfs(i,j); //简单的找连通块
- 55 }
- 56 }
- 57 cout<<ans<<endl;
- 58 return 0;
- 59 }
Codeforces 1345 D - Monopole Magnets的更多相关文章
- Codeforces Round #330 (Div. 1) C. Edo and Magnets 暴力
C. Edo and Magnets Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/594/pr ...
- CodeForces - 344A Magnets (模拟题)
CodeForces - 344A id=46664" style="color:blue; text-decoration:none">Magnets Time ...
- codeforces Magnets
link:http://codeforces.com/contest/344/problem/A 这道题目很简单. 把输入的01 和10 当做整数,如果相邻两个数字相等的话,那么就属于同一组,否则,就 ...
- Codeforces 344A Magnets
Description Mad scientist Mike entertains himself by arranging rows of dominoes. He doesn't need dom ...
- coderforces Gym 100803A/Aizu 1345/CSU 1536/UVALive 6832 Bit String Reordering(贪心证明缺)
Portal: http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=1345 http://codeforces.com/gym/100 ...
- Codeforces Round #639 (Div. 2)
Codeforces Round #639 (Div. 2) (这场官方搞事,唉,just solve for fun...) A找规律 给定n*m个拼图块,每个拼图块三凸一凹,问能不能拼成 n * ...
- python爬虫学习(5) —— 扒一下codeforces题面
上一次我们拿学校的URP做了个小小的demo.... 其实我们还可以把每个学生的证件照爬下来做成一个证件照校花校草评比 另外也可以写一个物理实验自动选课... 但是出于多种原因,,还是绕开这些敏感话题 ...
- 【Codeforces 738D】Sea Battle(贪心)
http://codeforces.com/contest/738/problem/D Galya is playing one-dimensional Sea Battle on a 1 × n g ...
- 【Codeforces 738C】Road to Cinema
http://codeforces.com/contest/738/problem/C Vasya is currently at a car rental service, and he wants ...
随机推荐
- Go语言从入门到放弃(四)
前言 有段时间没摸Go语言了,最近B站的Go语言泄露挺火的. 还差的很远呐 学无止境 本章主要介绍一些零碎的小知识点 变更记录 # 19.4.30 起笔 # 19.4.30 增加代码打包步骤 正文 ...
- LeetCode700 二叉搜索树中搜索
给定二叉搜索树(BST)的根节点和一个值. 你需要在BST中找到节点值等于给定值的节点. 返回以该节点为根的子树. 如果节点不存在,则返回 NULL. 例如, 给定二叉搜索树: 4 / \ 2 7 / ...
- 微信小程序request请求的封装
目录 1,前言 2,实现思路 3,实现过程 3.1,request的封装 3.2,api的封装 4,实际使用 1,前言 在开发微信小程序的过程中,避免不了和服务端请求数据,微信小程序给我们提供了wx. ...
- 【Linux】Linux介绍和安装 - 测试题
第一部分测试题 Linux介绍和安装 测试题 做点练习题,巩固一下咯~ ~ _ 10 个选择题. 1.让我们选择开机时进哪个操作系统的软件叫什么? A. booter B. bootloader C. ...
- 【Web】实现动态文章列表
简单记录 -慕课网- 步骤二:动态文章列表效果 实现这个 一个网页中常见的文章列表效果. 怎么实现文章列表案例 分解一波,CSS来改变样式 标题标签 HTML的无序列表 去掉项目符号 符号所占空间 列 ...
- Django中多表关联的展示问题:
增加一个知识点,当表中有多对多关联时,在前端展示的时候是一个列表,所以在展示的时候需要这样做: 表结构: class ProjectEnv(models.Model): project = model ...
- 阿里云VPC网络内网实例通过SNAT连接外网
场景: 1.有多个ECS实例,其中A实例有公网IP,可以上外网 其它实例没有公网IP,不能上外网 2.所有实例在一个交换机,也就是一个网络(172.16.0.0/16) 实例 内网IP 外网IP A ...
- STL_map和multimap容器
一.map/multimap的简介 map是标准的关联式容器,一个map是一个键值对序列,即(key,value)对.它提供基于key的快速检索能力. map中key值是唯一的.集合中的元素按一定的顺 ...
- 手把手做一个基于vue-cli的组件库(上篇)
基于vue-cli4的ui组件库,先贴个最终效果吧,步骤有点多,准备分上下篇,上篇:如何做一个初步的组件.下篇:编写说明文档及页面优化.开工. GitHub源码地址:https://github.co ...
- jQuery 选项卡切换过渡效果
<!DOCTYPE html> <head> <meta charset="utf-8"> <title></title> ...