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. winform的Textbox设置只读之后ForeColor无效的解决方法

    winform的Textbox设置只读之后ForeColor无效. 通过以下方法就可以解决: 设置为只读之后,把BackColor改一下,然后运行一下窗口,再设置ForeColor就没问题了. tbT ...

  2. Libcurl细说

    libcurl教程   原文地址:http://curl.haxx.se/libcurl/c/libcurl-tutorial.html 译者:JGood(http://blog.csdn.net/J ...

  3. 软通动力C语言机试题

    #include <stdio.h> int charCount(char *str) { int iCount = 0; int i, j, k=0; char *p = str; ch ...

  4. uml视频系列(二)——uml的概述

    在与uml进行了第一次的接触后,就被uml的博学多才给迷住了,uml居然可以做这么多的东西.才思敏捷的uml是设计软件的好帮手. 你还在为自己的类图不会设计而感到无助吗?你还在为你的对象不好确定而感到 ...

  5. Boost.Hana在visual studio 2017 rc中的残缺使用

    最新的visual studio还不支持hana,不知道vs2017正式版本出后会不会支持.等不及了,先用rc版试试吧. 1.从https://github.com/boostorg/hana下载或拉 ...

  6. PHP中的 !== 与 !=

    '==' 比较两边的值是否相等,会自动转换类型: '===' 则会严格比较类型是否相同,如果类型不相同,直接返回false. 例如:'123' === 123 // => false '!=' ...

  7. stop总结

    <!DOCTYPE html><html><head><meta charset="utf-8"><script src=&q ...

  8. 初学jQuery之jQuery事件与动画

    今天我们就谈谈jquery中的事件和简单动画吧,它们毕竟基础是进阶华丽的根本!! 1.事件 1.window事件 ready   准备就绪 2.鼠标事件 方法                      ...

  9. Myeclipse 搭建Java Web 项目 《一》

    今天将图文并茂的介绍如何使用myclipse 创建Java Web 项目;我使用的是myclipse 8.6 来进行创建: 1.打开Myeclipse,点击File --->然后New ---- ...

  10. 使用hubuild,mui开发微信app—首页(一)

    写在前面 本系列文章我将介绍一下从零开始利用hubuild,mui实现微信app的开发,该系列是个人学习记录,所以在每篇文章中,都是从怎么去实现开始讲解,然后再把实例中涉及知识点做一个概述. 创建一个 ...