洛谷P1331 海战
海战
题目链接
这还是一道联通块的题,只是需要判断是否存在以下四种情况:
o. .o oo oo
oo oo o. .o
如果存在就是Bad placement.
要注意标记以下,不然会出现多次输出Bad placement.的情况。
AC代码如下:
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
#include<queue>
#define MAXN 10010
using namespace std;
char G[MAXN][MAXN];
int vis[MAXN][MAXN];
int cnt;
int color;
struct item
{
int x;
int y;
};
int R,C;
queue<item>q;
void bfs(item t)
{
q.push(t);
vis[t.x][t.y]=color;
while(!q.empty())
{
item r;
r=q.front();
q.pop();
//if(vis[r.x][r.y]!=0) continue;
if(G[r.x+1][r.y]=='#'&&r.x+1<=R&&vis[r.x+1][r.y]==0)
{
vis[r.x+1][r.y]=color;
item t2;
t2.x=r.x+1;
t2.y=r.y;
q.push(t2);
}
if(G[r.x-1][r.y]=='#'&&r.x-1>=1&&vis[r.x-1][r.y]==0)
{
vis[r.x-1][r.y]=color;
item t2;
t2.x=r.x-1;
t2.y=r.y;
q.push(t2);
}
if(G[r.x][r.y+1]=='#'&&r.y+1<=C&&vis[r.x][r.y+1]==0)
{
vis[r.x][r.y+1]=color;
item t2;
t2.x=r.x;
t2.y=r.y+1;
q.push(t2);
}
if(G[r.x][r.y-1]=='#'&&r.y-1>=1&&vis[r.x][r.y-1]==0)
{
vis[r.x][r.y-1]=color;
item t2;
t2.x=r.x;
t2.y=r.y-1;
q.push(t2);
}
}
}
int main()
{
scanf("%d%d",&R,&C);
for(int i=1;i<=R;i++)
{
for(int j=1;j<=C;j++)
{
cin>>G[i][j];
}
}
item t;
for(int i=1;i<=R;i++)
{
for(int j=1;j<=C;j++)
{
if(G[i][j]=='#')
{
t.x=i;
t.y=j;
if(vis[i][j]==0)
{
cnt++;
color++;
bfs(t);
}
}
}
}
bool sign=0;
for(int i=1;i<=R;i++)
{
for(int j=1;j<=C;j++)
{
if(G[i][j]=='#'&&G[i+1][j]=='#'&&!sign&&G[i][j+1]=='#'&&G[i+1][j+1]=='.')
{
printf("Bad placement.");
sign=1;
}
else if(G[i][j]=='#'&&G[i+1][j]=='#'&&!sign&&G[i][j+1]=='.'&&G[i+1][j+1]=='#')
{
printf("Bad placement.");
sign=1;
}
else if(G[i][j]=='#'&&G[i+1][j]=='.'&&!sign&&G[i][j+1]=='#'&&G[i+1][j+1]=='#')
{
printf("Bad placement.");
sign=1;
}
else if(G[i][j]=='.'&&G[i+1][j]=='#'&&!sign&&G[i][j+1]=='#'&&G[i+1][j+1]=='#')
{
printf("Bad placement.");
sign=1;
}
}
}
// for(int i=1;i<=R;i++)
// {
// for(int j=1;j<=C;j++)
// {
// cout<<G[i][j];
// }
// cout<<endl;;
// }
if(!sign)
{
printf("There are %d ships.",color);
}
// for(int i=1;i<=R;i++)
// {
// for(int j=1;j<=C;j++)
// {
// printf("%d ",vis[i][j]);
// }
// cout<<endl;;
// }
return 0;
}
洛谷P1331 海战的更多相关文章
- 洛谷P1331海战
题目描述 在峰会期间,武装部队得处于高度戒备.警察将监视每一条大街,军队将保卫建筑物,领空将布满了F-2003飞机.此外,巡洋船只和舰队将被派去保护海岸线. 不幸的是因为种种原因,国防海军部仅有很少的 ...
- 洛谷——P1331 海战
P1331 海战 题目描述 在峰会期间,武装部队得处于高度戒备.警察将监视每一条大街,军队将保卫建筑物,领空将布满了F-2003飞机.此外,巡洋船只和舰队将被派去保护海岸线.不幸的是因为种种原因,国防 ...
- 洛谷 P1331 海战
传送门 题解:由于船是方形的,所以比较简单.但是考试的时候跪了,orz.忘了考虑类似一圈井号中间有一摊水. 可以只考虑这个点上方和左边点的情况,这样分为四种情况.一种是左边是一滩水, ...
- 洛谷P1331 海战 题解
题目传送门 思路 肯定食用dfs啦... 但关键是两条船接触了怎么判断呢?? 上图: 可以发现一下规律 当两条船接触时,必有一条直线连续穿过两条船 当一条船不与另一条船接触时,没有一条直线连续穿过两条 ...
- 海战(洛谷 P1331)
题目描述 在峰会期间,武装部队得处于高度戒备.警察将监视每一条大街,军队将保卫建筑物,领空将布满了F-2003飞机.此外,巡洋船只和舰队将被派去保护海岸线.不幸的是因为种种原因,国防海军部仅有很少的几 ...
- 洛谷1640 bzoj1854游戏 匈牙利就是又短又快
bzoj炸了,靠离线版题目做了两道(过过样例什么的还是轻松的)但是交不了,正巧洛谷有个"大牛分站",就转回洛谷做题了 水题先行,一道傻逼匈牙利 其实本来的思路是搜索然后发现写出来类 ...
- 洛谷P1352 codevs1380 没有上司的舞会——S.B.S.
没有上司的舞会 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题目描述 Description Ural大学有N个职员,编号为1~N.他们有 ...
- 洛谷P1108 低价购买[DP | LIS方案数]
题目描述 “低价购买”这条建议是在奶牛股票市场取得成功的一半规则.要想被认为是伟大的投资者,你必须遵循以下的问题建议:“低价购买:再低价购买”.每次你购买一支股票,你必须用低于你上次购买它的价格购买它 ...
- 洛谷 P2701 [USACO5.3]巨大的牛棚Big Barn Label:二维数组前缀和 你够了 这次我用DP
题目背景 (USACO 5.3.4) 题目描述 农夫约翰想要在他的正方形农场上建造一座正方形大牛棚.他讨厌在他的农场中砍树,想找一个能够让他在空旷无树的地方修建牛棚的地方.我们假定,他的农场划分成 N ...
随机推荐
- Selenium 元素查找
1.尽量使用ID或者name去定位元素,如果这个元素没有ID或者Name,那么就是用它最近的父节点的ID或者Name去定位. 2.写自动化脚本不是一个人的事情,是一个团队的事情,合作能更好,更轻松得完 ...
- 关于BaseServlet
BaseServlet 是项目中所有servlet的父类,作用是为了让一个servlet可以同时处理多个请求,因为我们之前比如说完成对于商品的增删改查的时候,每一个需求就要创建一个servlet,这样 ...
- win10下各种问题的解决办法
本来申请这个博客是为了写一些Java学习笔记的,但是鉴于我半年内无数次重装系统的惨痛经历,所以把win10系统的一些问题总结一下. 此账号密码:1994llz. 1.win10取消开机密码: http ...
- UESTC 1246 拆x3
用归纳法分析可以知道死循环只有4. 分析一下复杂度,如果n很大并且不是素数,根据基本不等式可以知道 sum factor(n) ≥ 2+n/2 ≍ n/2. 复杂度是O(T*logN*sqrt(N)) ...
- 虚连接 tcp
由TCP 建立的连接叫做虚连接(virtual connection),这是因为它们是由软件实现的,底层的系统并不对连接提供硬件或软件支持,只是两台机器上的TCP 软件模块通过交换消息来实现逻辑...
- 轻量级HTTP服务器Nginx(入门与安装篇)
轻量级HTTP服务器Nginx(入门篇) 文章来源于南非蚂蚁 一.什么是Nginx 相信很多读者都对Apache非常熟悉,与Apache类似,Nginx是一款高性能的HTTP和反向代理服务器软 ...
- CentOS 6\7修改主机名
1.CentOS6修改主机名 1)临时修改主机名: 显示主机名: oracle@localhost:~$ hostname localhost 修改 oracle@localhost:~$ sudo ...
- [论文理解]关于ResNet的进一步理解
[论文理解]关于ResNet的理解 这两天回忆起resnet,感觉残差结构还是不怎么理解(可能当时理解了,时间长了忘了吧),重新梳理一下两点,关于resnet结构的思考. 要解决什么问题 论文的一大贡 ...
- Java 压缩文件夹工具类(包含解压)
依赖jar <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons ...
- iphone应用程序生命周期浅析
做iphone开发有必要知道iphone程序的生命周期,说白点就是当点击程序图标启动程序开始到退出程序整个使用运行过程中底下的代码都发生了什么,只有理解生命周期,有利于我们开发人员开发出更棒的应用 接 ...