#P15540. [nordic2018]Nordic Camping

    ID: 14752 传统题 1000ms 256MiB 尝试: 1 已通过: 1 难度: 6 上传者: 标签>CF2000动态规划单调队列前缀和二分

[nordic2018]Nordic Camping

题目背景

在北欧高地露营时,拥有可靠的水源有时事关生死。传统上,北欧露营者会把帐篷搭在水源上方,这样就可以不用走出帐篷也能取水。还有一个奇怪的传统是:他们只使用正方形帐篷

题目描述

高地上的营地可以被看作一个 N×MN \times M 的网格。Jon 已经调查了营地中所有可用或不可用的位置。网格中的每个格子要么是平坦可用的,要么是崎岖不可用的。

现在给定若干个水源位置。对于每个水源位置,你需要求出:能够完全搭在平坦可用格子上,并且覆盖该水源格子的最大正方形帐篷的面积

帐篷必须与网格对齐,不能只覆盖某个格子的一部分。对于一个格子,帐篷要么完整覆盖它,要么完全不覆盖它。

输入格式

第一行包含两个整数 N,MN,M,表示网格的行数和列数。

接下来 NN 行,每行一个长度为 MM 的字符串,表示网格:

  • . 表示平坦可用的格子;
  • # 表示崎岖不可用的格子。

接下来一行包含一个整数 QQ,表示询问的水源个数。

接下来 QQ 行,每行两个整数 x,yx,y,表示一个水源位于第 xx 行第 yy 列。

输出格式

对于每个水源,按照输入顺序输出一行一个整数,表示能够覆盖该水源的最大正方形帐篷的面积。

样例输入

3 3
#..
...
.##
2
1 3
2 1

样例输出

4
1

数据范围与子任务

KK 为网格中不可用格子 # 的个数。

子任务 分值 限制
1 20 N,M50N,M \le 50Q1000Q \le 1000
2 25 N,M800N,M \le 800K105K \le 10^5Q105Q \le 10^5
3 20 N10N \le 10M2000M \le 2000Q500Q \le 500
4 35 N,M2000N,M \le 2000K105K \le 10^5Q105Q \le 10^5