洛谷 P1331 海战
题解:由于船是方形的,所以比较简单。但是考试的时候跪了,orz。忘了考虑类似一圈井号中间有一摊水。
可以只考虑这个点上方和左边点的情况,这样分为四种情况。一种是左边是一滩水,上面是船,那么这个点与上面的点构成船。另一种正好相反。第三种是左边和上面都是水,那么它自己先构成船。第四种是左边和上面都是船,但是不是同一条船。这时船相邻。那么这样子考虑的话,一定会有不满足方形的船出现。因此在搜到一滩水的时候,判断它的上方和左边有没有船,如果都有船,且不是同一条,则有船相邻。
#include<cstdio>
#include<iostream>
#include<cstring>
#define N 1100
using namespace std;
char a[N][N];
int f[N][N]={};
int r,c,sum=;
int main()
{
scanf("%d%d",&r,&c);
for (int i=;i<=r;i++)
for (int j=;j<=c;j++)
cin>>a[i][j];
for (int i=;i<=r;i++)
for (int j=;j<=c;j++)
{
if (a[i][j]=='.') f[i][j]=;
if (a[i][j]=='#')
{
int x=f[i-][j],y=f[i][j-];
if (x!=&&y!=&&x!=y)
{
cout<<"Bad placement."<<endl;
return ;
}
else if (x==&&y!=) f[i][j]=y;
else if (x!=&&y==) f[i][j]=x;
else if (x==&&y==) f[i][j]=++sum;
} }
printf("There are %d ships.\n",sum);
return ; }
蠢蛋的60分代码
#include<cstdio>
#include<iostream>
#include<cstring>
#define N 1100
using namespace std;
char a[N][N];
int f[N][N]={};
int r,c,sum=;
int main()
{
scanf("%d%d",&r,&c);
for (int i=;i<=r;i++)
for (int j=;j<=c;j++)
cin>>a[i][j];
for (int i=;i<=r;i++)
for (int j=;j<=c;j++)
{
int x=f[i-][j],y=f[i][j-];
if (a[i][j]=='.')
{
if (x==y&&x!=)
{
cout<<"Bad placement."<<endl;
return ;
}
f[i][j]=;
}
if (a[i][j]=='#')
{ if (x!=&&y!=&&x!=y)
{
cout<<"Bad placement."<<endl;
return ;
}
else if (x==&&y!=) f[i][j]=y;
else if (x!=&&y==) f[i][j]=x;
else if (x==&&y==) f[i][j]=++sum;
else if (x==y) f[i][j]=x;
} }
printf("There are %d ships.\n",sum);
return ; }
改后满分代码
洛谷 P1331 海战的更多相关文章
- 洛谷P1331海战
题目描述 在峰会期间,武装部队得处于高度戒备.警察将监视每一条大街,军队将保卫建筑物,领空将布满了F-2003飞机.此外,巡洋船只和舰队将被派去保护海岸线. 不幸的是因为种种原因,国防海军部仅有很少的 ...
- 洛谷——P1331 海战
P1331 海战 题目描述 在峰会期间,武装部队得处于高度戒备.警察将监视每一条大街,军队将保卫建筑物,领空将布满了F-2003飞机.此外,巡洋船只和舰队将被派去保护海岸线.不幸的是因为种种原因,国防 ...
- 洛谷P1331 海战
海战 题目链接 这还是一道联通块的题,只是需要判断是否存在以下四种情况: o. .o oo oo oo oo o. .o 如果存在就是Bad placement. 要注意标记以下,不然会出现多次输出B ...
- 洛谷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 ...
随机推荐
- centos 5 yum安装与配置vsFTPd FTP服务器
vsftpd作为FTP服务器,在Linux系统中是非常常用的.下面我们介绍如何在centos系统上安装vsftp. 什么是vsftpd vsftpd是一款在Linux发行版中最受推崇的FTP服务器程序 ...
- WdatePicker 控制选择范围
1. 跨无限级框架显示 无论你把日期控件放在哪里,你都不需要担心会被外层的iframe所遮挡进而影响客户体验,因为My97日期控件是可以跨无限级框架显示的 示例2-7 跨无限级框架演示 可无限跨越框架 ...
- AbpZero--4.不使用谷歌字体,提升加载速度
jtable控件样式中会使用到谷歌字体,每次访问都特别慢 1.打开jtable.css文件 [..\MyCompanyName.AbpZeroTemplate.Web\libs\jquery-jtab ...
- Web —— 小技巧集
html中设置锚点定位3种方法(已知): 1. id 定位 <a href="#1F" name="1F">锚点1</a> ...
- Mybatis+SpringMVC实现分页查询(附源码)
Maven+Mybatis+Spring+SpringMVC实现分页查询(附源码) 一.项目搭建 关于项目搭建,小宝鸽以前写过一篇Spirng+SpringMVC+Maven+Mybatis+MySQ ...
- 使用IndexReader.repen提高搜索速度
1,使用indexreader创建indexsearcher. 2,indexsearcher在使用完了以后不要关闭. 3.使用indexreader.isCurrent()判断索引是否被indexw ...
- Android自己定义控件之应用程序首页轮播图
如今基本上大多数的Android应用程序的首页都有轮播图.就是像下图这种(此图为转载的一篇博文中的图.拿来直接用了): 像这种组件我相信大多数的应用程序都会使用到,本文就是自己定义一个这种组件,能够动 ...
- OpenStack Cinder源代码流程简析
版权声明:本博客欢迎转载,转载时请以超链接形式标明文章原始出处!谢谢! 博客地址:http://blog.csdn.net/i_chips 一.概况 OpenStack的各个模块都有对应的client ...
- 解密-神秘的 RunLoop
引言 一直以来RunLoop就是个神秘的领域,好多2.3年的开发者都不能准确的表述它的作用,说它神秘,其实RunLoop并没有大家想象中的那么神秘,那么不好理解,本文就带大家好好剖析一下”神秘的Run ...
- 《Android开发艺术探索》读书笔记 (9) 第9章 四大组件的工作过程
第9章 四大组件的工作过程 9.1 四大组件的运行状态 (1)四大组件中只有BroadcastReceiver既可以在AndroidManifest文件中注册,也可以在代码中注册,其他三个组件都必须在 ...