E. 岛屿面积查询

    传统题 1000ms 256MiB

岛屿面积查询

该比赛已结束,您无法在比赛模式下递交该题目。您可以点击“在题库中打开”以普通模式查看和递交本题。

【题目描述】

小蓝最近在整理一张海岛地图。地图可以看成一个 nnmm 列的方格图,每个方格要么是陆地,要么是海水。

其中:

  • # 表示陆地;
  • . 表示海水。

如果两个陆地方格有公共边,也就是上下左右相邻,那么它们属于同一个岛屿。一个岛屿的面积等于这个岛屿中陆地方格的数量。

现在小蓝会提出 qq 次询问。每次询问给出一个方格 (x,y)(x,y)

  • 如果这个方格是海水,输出 00
  • 如果这个方格是陆地,输出它所在岛屿的面积。

你需要依次回答所有询问。


【输入描述】

第一行输入三个整数 n,m,qn,m,q,分别表示地图的行数、列数和询问次数。

接下来 nn 行,每行输入一个长度为 mm 的字符串,表示地图。字符串中只包含 #.

接下来 qq 行,每行输入两个整数 x,yx,y,表示一次询问的方格坐标。

保证:

  • 1n,m10001\le n,m\le 1000
  • n×m200000n\times m\le 200000
  • 1q2×1051\le q\le 2\times 10^5
  • 1xn1\le x\le n1ym1\le y\le m

【输出描述】

输出 qq 行。

对于每次询问,输出一行一个整数,表示答案。


【样例 1】

【样例 1 输入】

3 4 5
##..
#..#
..##
1 1
1 3
2 4
3 3
3 1

【样例 1 输出】

3
0
3
3
0

【样例 1 解释】

左上角的岛屿包含 (1,1),(1,2),(2,1)(1,1),(1,2),(2,1)33 个陆地方格。

右下角的岛屿包含 (2,4),(3,3),(3,4)(2,4),(3,3),(3,4)33 个陆地方格。

询问到海水方格时,答案为 00


【样例 2】

【样例 2 输入】

5 6 8
#..###
#..#..
..##..
.##..#
.....#
1 1
1 4
3 3
4 1
4 2
4 6
5 5
5 6

【样例 2 输出】

2
8
8
0
8
2
0
2

【样例 2 解释】

地图中较大的岛屿面积为 88,右下角的岛屿面积为 22,左侧上方的岛屿面积为 22


【样例 3】

见选手目录下的 Data/sample3.inData/sample3.ans

该样例满足 n,m20n,m\le 20q100q\le 100


【样例 4】

见选手目录下的 Data/sample4.inData/sample4.ans

该样例满足地图中所有陆地连成一个连通块。


【样例 5】

见选手目录下的 Data/sample5.inData/sample5.ans

该样例仅满足完整数据范围,无额外限制。


【数据规模与约定】

测试点编号 分数 特殊性质
1 ~ 3 15 n,m20n,m\le 20q100q\le 100
4 ~ 6 20 地图中所有陆地连成一个连通块
7 ~ 9 每个岛屿面积均不超过 1010
10 ~ 12 n×m50000n\times m\le 50000
13 ~ 15 25 无额外限制

对于所有测试点,均满足 1n,m10001\le n,m\le 1000n×m200000n\times m\le 2000001q2×1051\le q\le 2\times 10^5

点击下载本题选手目录

夏令营考核1

未参加
状态
已结束
规则
OI
题目
6
开始于
2026-7-24 13:30
结束于
2026-7-24 14:00
持续时间
0.5 小时
主持人
参赛人数
36