P1813 [JSOI2008]海战训练
时间: 1000ms / 空间: 131072KiB / Java类名: Main

描述

为了准备高层峰会,元首命令武装部队必须处于高度戒备。警察将监视每一条大街,军队将保卫建筑物,领空将布满了JS-2008飞机。此外,巡洋船只和舰队将被派去保护海岸线。

但不幸的是因为种种原因,海军部仅有很少的几位军官能指挥大型海战。因此,他们考虑培养一些新的海军指挥官,为此选择了“海战”这一游戏来帮助训练。

在这个著名的游戏中,一个方形的盘上放置了固定数量和形状的船只,每只船却不能碰到其它的船。在这个题中,我们仅考虑船是方形的,所有的船只都是由图形组成的方形。编写程序求出该棋盘上放置的船只的总数。

输入格式

输入文件头一行由用空格隔开的两个整数R和C组成,1<=R,C<=1000,这两个数分别表示游戏棋盘的行数和列数。接下来的R行每行包含C个字符,每个字符可以为“#”,也可为“.”,“#”表示船只的一部分,“.”表示水。

输出格式

为每一个段落输出一行解。如果船的位置放得正确(即棋盘上只存在相互之间不能接触的方形,如果两个“#”号上下相邻或左右相邻却分属两艘不同的船只,则称这两艘船相互接触了)。就输出一段话“There are S ships.”,S表示船只的数量。否则输出“Bad placement.”。

测试样例1

输入

6 8 
.....#.# 
##.....# 
##.....# 
.......# 
#......# 
#..#...#

输出

There are 5 ships.

备注

JSOI2008江苏省青少年信息学奥林匹克代表队组队选拔赛第二轮试题
 
题解:昨天刚刚学的悬线法求矩形居然今天就用到了——这个题里面需要求出每个点的左侧、右侧、上方、下方各有多少个“1”点(本程序中包含自己),然后接下来的任务就是判断矩形,我的做法如下——在表格中枚举每个左侧、上方均为0但是自身为1的点(一般也就是矩形的左上角),然后从此点一直向下,检测此点的左侧是否一直只有自己1个点,右侧宽度是否一直一致;然后从此点再向右扫,看上方是否一直只有自己1个点,下方高度是否保持一致。假如出现问题则说明出现了黏在一起的多个矩形,则Bad placement.(HansBug:则OrzPhile嘿嘿嘿。。。 Phile:TT);假如一切正常则正方形数+1,然后继续。。。(特别提醒:输出时别忘了格式是There are X ships.)
 
 var
i,j,k,l,m,n,tt:longint;
a,b,dow,up,lef,rig:array[..,..] of longint;
c1:char;
procedure OrzPhile;
begin
writeln('Bad placement.');
halt;
end;
begin
readln(n,m);
for i:= to n do
begin
for j:= to m do
begin
read(c1);
case c1 of
'.':a[i,j]:=;
else a[i,j]:=;
end;
end;
readln;
end;
fillchar(b,sizeof(b),);
fillchar(dow,sizeof(dow),);
fillchar(rig,sizeof(rig),);
fillchar(lef,sizeof(lef),);
for i:= to n do
for j:= to m do
begin
if a[i,j]= then lef[i,j]:=lef[i,j-]+ else lef[i,j]:=;
if a[i,j]= then up[i,j]:=up[i-,j]+ else up[i,j]:=;
end;
for i:=n downto do
for j:=m downto do
begin
if a[i,j]= then rig[i,j]:=rig[i,j+]+ else rig[i,j]:=;
if a[i,j]= then dow[i,j]:=dow[i+,j]+ else dow[i,j]:=;
end;
tt:=;
for i:= to n do
for j:= to m do
if (a[i,j]=) and (a[i-,j]=) and (a[i,j-]=) then
begin
for k:= to dow[i,j] do
begin
if lef[i+k-,j]> then OrzPhile;
if rig[i+k-,j]<>rig[i,j] then OrzPhile;
end;
for k:= to rig[i,j] do
begin
if up[i,j+k-]> then OrzPhile;
if dow[i,j+k-]<>dow[i,j] then OrzPhile;
end;
inc(tt);
end;
writeln('There are ',tt,' ships.');
end.

Tyvj P1813 [JSOI2008]海战训练的更多相关文章

  1. JSOI2008 火星人prefix

    1014: [JSOI2008]火星人prefix Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 2918  Solved: 866[Submit][ ...

  2. BZOJ1012: [JSOI2008]最大数maxnumber [线段树 | 单调栈+二分]

    1012: [JSOI2008]最大数maxnumber Time Limit: 3 Sec  Memory Limit: 162 MBSubmit: 8748  Solved: 3835[Submi ...

  3. SSD框架训练自己的数据集

    SSD demo中详细介绍了如何在VOC数据集上使用SSD进行物体检测的训练和验证.本文介绍如何使用SSD实现对自己数据集的训练和验证过程,内容包括: 1 数据集的标注2 数据集的转换3 使用SSD如 ...

  4. 基于英特尔® 至强 E5 系列处理器的单节点 Caffe 评分和训练

    原文链接 在互联网搜索引擎和医疗成像等诸多领域,深度神经网络 (DNN) 应用的重要性正在不断提升. Pradeep Dubey 在其博文中概述了英特尔® 架构机器学习愿景. 英特尔正在实现 Prad ...

  5. 记一周cdqz训练

    #include <cstdio> using namespace std; int main(){ puts("转载请注明出处:http://www.cnblogs.com/w ...

  6. 1015: [JSOI2008]星球大战starwar

    1015: [JSOI2008]星球大战starwar Time Limit: 3 Sec Memory Limit: 162 MB Description 很久以前,在一个遥远的星系,一个黑暗的帝国 ...

  7. 1014: [JSOI2008]火星人prefix

    1014: [JSOI2008]火星人prefix Time Limit: 10 Sec Memory Limit: 162 MB Description 火星人最近研究了一种操作:求一个字串两个后缀 ...

  8. 语言模型kenlm的训练及使用

    一.背景 近期研究了一下语言模型,同事推荐了一个比较好用的工具包kenlm,记录下使用过程. 二.使用kenlm训练 n-gram 1.工具介绍:http://kheafield.com/code/k ...

  9. LUA中将未分类数据分为测试集和训练集

    require 'torch' require 'image' local setting = {parent_root = '/home/pxu/image'} function list_chil ...

随机推荐

  1. java 调用webservice的各种方法总结,wsimport方法总结

    http://www.blogjava.net/zjhiphop/archive/2009/04/29/webservice.html wsimport生成webservice客户端: wsimpor ...

  2. vue原来可以这样上手

    今儿与一群友讨论vue相关问题让我思量极深,1.我们是否在争对性解决问题或者说是帮助别人:2.我们是否在炫耀自己的技能.以下是被戏剧化的对白: "群友":最近按照vue官网示例学习 ...

  3. 转:Oracle弃用sun.reflect.Reflection.getCallerClass

    http://www.infoq.com/cn/news/2013/07/Oracle-Removes-getCallerClass 作为Java开发者,我们经常忽略@Deprecated注释,继续使 ...

  4. MVC View显示详解(RenderBody,RenderPage,RenderSection,Partial)

    一.Views文件夹 -> Shared文件夹下的 _Layout.cshtml 母版页 @RenderBody 当创建基于_Layout.cshtml布局页面的视图时,视图的内容会和布局页面合 ...

  5. Error:Failed to open zip file. Gradle's dependency cache may be corrupt (this sometimes occurs after a network connection timeout.)

    刚开始写博客,可能有点语无伦次,请大家见谅.... 今天我们来讲讲AS出现下面图片原因的问题 同学们,刚看到这个,是不是有点小懵逼,不要怕,今天我们就来讲讲,出现这个问题的原因 今天我在AS(Andr ...

  6. JAVA--可变长参数

    可变长参数: 可变长参数可以接受任意个数的实参,形参实际上是一个数组. 语法形式: 方法名称(类型 参数1,类型 参数2,类型...可变长参数) *可变长参数一定是方法的最后一个参数 public v ...

  7. ASP.NET MVC5+EF6+EasyUI 后台管理系统(82)-Easyui Datagrid批量操作(编辑,删除,添加)

    前言 有时候我们的后台系统表单比较复杂,做过进销存或者一些销售订单的都应该有过感觉 虽然Easyui Datagrid提供了行内编辑,但是不够灵活,但是我们稍微修改一下来达到批量编辑,批量删除,批量添 ...

  8. Android的开机流程

    Android的开机流程 1. 系统引导bootloader 1) 源码:bootable/bootloader/* 2) 说明:加电后,CPU将先执行bootloader程序,此处有三种选择 a) ...

  9. 在SQL Server里如何处理死锁

    在今天的文章里,我想谈下SQL Server里如何处理死锁.当2个查询彼此等待时会发生死锁,没有一个查询可以继续它们的操作.首先我想给你大致讲下SQL Server如何处理死锁.最后我会展示下SQL ...

  10. 记忆 : Odata $count

    在v4.0 的规范中,没有$inlineCount,只有$count. 但是在Entity 不支持$count,给出的原因是这样的, asp.net 的 web api 是支持Odata 的, 但是e ...