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 ...
随机推荐
- LinkedList 的 API 与数据结构
LinkedList 是 List 接口和 Deque 接口的双向链表实现,它所有的 API 调用都是基于对双向链表的操作.本文将介绍 LinkedList 的数据结构和分析 API 中的算法. 数据 ...
- Java 中的 equals() 和 hashCode()
equals() 和 hashCode() 在 Object 类中以本地方法的形式存在,Java 中所有的类都继承了 Object 类,因此所有的类中都包含了这两个方法.这两个方法在 Java 开发中 ...
- SpringBoot2.+restful风格请求方式设置以及表单中日期格式设置
1).SpringBoot在自动配置很多组件的时候,先看容器中有没有用户自己配置的(@Bean.@Component)如果有就用用户配置的,如果没有,才自动配置:如果有些组件可以有多个(ViewR ...
- ctfhub技能树—sql注入—报错注入
打开靶机 payload 1 Union select count(*),concat((查询语句),0x26,floor(rand(0)*2))x from information_schema.c ...
- SAP下载文档为乱码
通过事物WE60下载的文档为乱码,主要原因是编码格式的不匹配,通常默认的编码格式为ANSI编码,那么我们需要将源码的编码格式转换成UTF-8,这样问题可以解决了. 附:编码格式介绍 不同的国家和地 ...
- git 基本命令和操作
设置全局用户名+密码 $ git config --global user.name 'runoob' $ git config --global user.email test@runoob.com ...
- 【ELK】elastalert 日志告警
一.环境 系统:centos7 elk 版本:7.6.2 1.1 ElastAlert 工作原理 周期性的查询Elastsearch并且将数据传递给规则类型,规则类型定义了需要查询哪些数据. 当一个规 ...
- django 组件 自定义过滤器 自定义标签 静态文件配置
组件 将一些功能标签写在一个html文件里,这个文件作为一个组件,如果那个文件需要就直接拿过来使用即可: 这是title.html文件,写了一个导航栏,作为一个公用的组件 <div style= ...
- Redis 实战 —— 07. 复制、处理故障、事务及性能优化
复制简介 P61 关系型数据库通常会使用一个主服务器 (master) 向多个从服务器 (slave) 发送更新,并使用从服务器来处理所有读请求. Redis 也采用了同样的方法实现自己的复制特性,并 ...
- js中的事件委托(事件代理)详解
本文转载:https://www.cnblogs.com/liugang-vip/p/5616484.html#!comments js中的事件冒泡.事件委托是js 中一些需要注意的小知识点,这里结合 ...