「CF525D」Arthur and Walls
###题目链接
\(Solution\)
如果一个#要更改,那么一个四个格子的正方形只有他一个是#,bfs弄一下就好了
\(Code\)
#include<bits/stdc++.h>
using namespace std;
const int inf=1e9,mod=1e9+7;
typedef long long ll;
int read() {
int x=0,f=1;
char c=getchar();
while(c<'0'||c>'9') f=(c=='-')?-1:1,c=getchar();
while(c>='0'&&c<='9') x=x*10+c-'0',c=getchar();
return x*f;
}
struct node {
int x,y;
};
queue<node> q;
int n,m;
char a[3001][3001];
int c[3001][3001];
int b[10];
int fx[10]= {0,0,0,1,-1};
int fy[10]= {0,1,-1,0,0};
void bfs() {
while(!q.empty()) {
node now=q.front();
q.pop();
int x=now.x,y=now.y;
b[1]=b[2]=b[3]=b[4]=0;
if(x!=1&&y!=1)
b[1]=c[x-1][y-1]+c[x-1][y]+c[x][y-1];
if(x!=1&&y!=m)
b[2]=c[x-1][y+1]+c[x-1][y]+c[x][y+1];
if(x!=n&&y!=1)
b[3]=c[x+1][y-1]+c[x+1][y]+c[x][y-1];
if(x!=n&&y!=m)
b[4]=c[x+1][y+1]+c[x+1][y]+c[x][y+1];
if(b[1]==1) {
if(c[x-1][y-1]) q.push((node){x-1,y-1}),c[x-1][y-1]=0;
if(c[x-1][y]) q.push((node){x-1,y}),c[x-1][y]=0;
if(c[x][y-1]) q.push((node){x,y-1}),c[x][y-1]=0;
}
if(b[2]==1) {
if(c[x-1][y+1]) q.push((node){x-1,y+1}),c[x-1][y+1]=0;
if(c[x-1][y]) q.push((node){x-1,y}),c[x-1][y]=0;
if(c[x][y+1]) q.push((node){x,y+1}),c[x][y+1]=0;
}
if(b[3]==1) {
if(c[x+1][y-1]) q.push((node){x+1,y-1}),c[x+1][y-1]=0;
if(c[x+1][y]) q.push((node){x+1,y}),c[x+1][y]=0;
if(c[x][y-1]) q.push((node){x,y-1}),c[x][y-1]=0;
}
if(b[4]==1) {
if(c[x+1][y+1]) q.push((node){x+1,y+1}),c[x+1][y+1]=0;
if(c[x+1][y]) q.push((node){x+1,y}),c[x+1][y]=0;
if(c[x][y+1]) q.push((node){x,y+1}),c[x][y+1]=0;
}
}
}
main() {
n=read(),m=read();
for(int i=1; i<=n; i++) {
scanf("%s",a[i]+1);
for(int j=1; j<=m; j++){
if(a[i][j]=='.')
q.push((node) {i,j});
else c[i][j]=1;
}
}
bfs();
for(int i=1;i<=n;i++,cout<<endl)
for(int j=1;j<=m;j++)
if(c[i][j]==1)
cout<<"*";
else cout<<".";
}
「CF525D」Arthur and Walls的更多相关文章
- Ubuntu「一键」设置全局代理
Ubuntu「一键」设置代理 sonictl note: the DNS problem may be still there. Except proxychains. WSL (Windows Su ...
- 「译」JUnit 5 系列:条件测试
原文地址:http://blog.codefx.org/libraries/junit-5-conditions/ 原文日期:08, May, 2016 译文首发:Linesh 的博客:「译」JUni ...
- 「译」JUnit 5 系列:扩展模型(Extension Model)
原文地址:http://blog.codefx.org/design/architecture/junit-5-extension-model/ 原文日期:11, Apr, 2016 译文首发:Lin ...
- JavaScript OOP 之「创建对象」
工厂模式 工厂模式是软件工程领域一种广为人知的设计模式,这种模式抽象了创建具体对象的过程.工厂模式虽然解决了创建多个相似对象的问题,但却没有解决对象识别的问题. function createPers ...
- 「C++」理解智能指针
维基百科上面对于「智能指针」是这样描述的: 智能指针(英语:Smart pointer)是一种抽象的数据类型.在程序设计中,它通常是经由类型模板(class template)来实做,借由模板(tem ...
- 「JavaScript」四种跨域方式详解
超详细并且带 Demo 的 JavaScript 跨域指南来了! 本文基于你了解 JavaScript 的同源策略,并且了解使用跨域跨域的理由. 1. JSONP 首先要介绍的跨域方法必然是 JSON ...
- 「2014-5-31」Z-Stack - Modification of Zigbee Device Object for better network access management
写一份赏心悦目的工程文档,是很困难的事情.若想写得完善,不仅得用对工具(use the right tools),注重文笔,还得投入大把时间,真心是一件难度颇高的事情.但,若是真写好了,也是善莫大焉: ...
- 「2014-3-18」multi-pattern string match using aho-corasick
我是擅(倾)长(向)把一篇文章写成杂文的.毕竟,写博客记录生活点滴,比不得发 paper,要求字斟句酌八股结构到位:风格偏杂文一点,也是没人拒稿的.这么说来,arxiv 就好比是 paper 世界的博 ...
- 「2014-3-17」C pointer again …
记录一个比较基础的东东-- C 语言的指针,一直让人又爱又恨,爱它的人觉得它既灵活又强大,恨它的人觉得它太过于灵活太过于强大以至于容易将人绕晕.最早接触 C 语言,还是在刚进入大学的时候,算起来有好些 ...
随机推荐
- TensorFlow良心入门教程
All the matrials come from Machine Learning class in Polyu,HK and I reorganize them and add referenc ...
- HTML5之历史记录(实现的当页面应用路由器的底层)
history hashchange与popstate 一.history history.back():加载history列表中的前一个URL history.forward():加载history ...
- MySQL计算两个日期相差的天数、月数、年数
MySQL自带的日期函数TIMESTAMPDIFF计算两个日期相差的秒数.分钟数.小时数.天数.周数.季度数.月数.年数,当前日期增加或者减少一天.一周等等. SELECT TIMESTAMPDIFF ...
- phpstudycomposer thinkPHP5.1 使用
1.首先把php变成全局变量 2.打开phpstudy composer 的安装目录 E:\phpstudy\PHPTutorial\tools\composer 把里面的文件全部删除(或者备份一下) ...
- CentOS7安装node环境
1 找到官网复制链接地址 2 再自己Linux的按照路径,wget下载软件包并解压 wget https://nodejs.org/dist/v10.16.1/node-v10.16.1-linux- ...
- 第九章·Logstash深入-Logstash配合rsyslog收集haproxy日志
rsyslog介绍及安装配置 在centos 6及之前的版本叫做syslog,centos 7开始叫做rsyslog,根据官方的介绍,rsyslog(2013年版本)可以达到每秒转发百万条日志的级别, ...
- Oracle【多表查询操作(SQL92&SQL99)】
多表联合查询:需要获取的数据分布在多张表中 SQL92: --笛卡尔积:将多个表的数据进行一一对应,所得的结果为多表的笛卡尔积 select * from emp; select * from dep ...
- zabbix 3.2.2 server端添加客户端主机配置 (四)
一.添加主机 主机是Zabbix监控的基本载体,所有的监控项都是基于主机的,那么我们如何来添加一台被监控的主机呢? 1.首先要在被监控的主机上安装好zabbix_agent服务,并可以正常启动zabb ...
- linux基础—课堂随笔04_文件查找和压缩
文件查找和压缩 文件查找 1.locate 这个命令是对其生成的数据库进行遍历(生成数据库的命令:updatedb),这一特性决定了用locate查找文件速度很快,但是locate命令只能对文件进 ...
- java开发技巧
1,IDEA辅助功能Shift +F2去到有错误的地方Alt+Enter,会给出解决错误的建议: 2,调试,没问题的步骤,直接跳过,不要跳入细节: 调试时,要明确要跟踪的变量,不要陷入混乱: 3,调试 ...