#P1331. 海战(Sea Battle)

0
    ID: 8548 传统题 1000ms 128MiB 尝试: 0 已通过: 0 难度: (无) 上传者: 标签>P1331宽度优先搜索广度优先搜索连通块GESP 6级CSP-J

海战(Sea Battle)

海战(Sea Battle)

题目描述

在峰会期间,武装部队得处于高度戒备。警察将监视每一条大街,军队将保卫建筑物,领空将布满了 F-2003 飞机。

此外,巡洋船只和舰队将被派去保护海岸线。不幸的是,因为种种原因,国防海军部仅有很少的几位军官能指挥大型海战。因此,他们培养了一些新海军指挥官。军官们选择了“海战”游戏来帮助他们学习。

在一个方形的盘上,放置了固定数量和形状的船只,每只船却不能碰到其它的船。在本题中,我们认为船是方形的,所有的船只都是由图形组成的方形。

求出该棋盘上放置的船只的总数。

输入格式

第一行为两个整数 RR 和 CC,用空格隔开,分别表示游戏棋盘的行数和列数。

接下来 RR 行,每行 CC 个字符,为 # 或 .。# 表示船只的一部分,. 表示水。

输出格式

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

样例输入 #1

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

样例输出 #1

There are 5 ships.

数据范围

对于 100%100\% 的数据,1≤R,C≤10001 \le R,C \le 1000。

知识点与难度

本题涉及的知识点从属于 GESP 6级,难度(CF Rating):1150。


测试点分布

Subtask 分值 测试点编号 说明
0 10 1~2 样例及最小边界测试
1 20 3~8 1≤R,C≤501 \le R, C \le 50
2 15 9~11 Hack 数据:全水域(0 艘船)、L 形与 T 形非法接触船只(Bad placement.)
3 30 12~20 100≤R,C≤800100 \le R, C \le 800
4 25 21~25 R=1000,C=1000R = 1000, C = 1000 满规模网格 BFS 测试

出处:原题链接