#agc015c. [agc015_c]Nuske vs Phantom Thnook

[agc015_c]Nuske vs Phantom Thnook

题目描述

Nuske有一个由 NNMM 列的正方形格子网格。行从上到下编号为 11NN,列从左到右编号为 11MM。网格中的每个格子要么是蓝色要么是白色。如果 Si,jS_{i,j}11,表示第 ii 行第 jj 列的格子是蓝色;如果 Si,jS_{i,j}00,表示该格子是白色。对于任意一对蓝色格子 aabb,存在至多一条路径,该路径以 aa 为起点,依次经过相邻的(相邻边)蓝色格子,最终到达 bb,且不能重复经过同一个格子。

Nuske的永恒对手Phantom Thnook向Nuske提出了 QQ 个查询。第 ii 个查询包含四个整数 xi,1x_{i,1}yi,1y_{i,1}xi,2x_{i,2}yi,2y_{i,2},询问他以下问题:当将网格上以 xi,1x_{i,1} 行、xi,2x_{i,2} 行、yi,1y_{i,1} 列和 yi,2y_{i,2} 列为边界(包括边界)的矩形区域切割出来后,该区域内有多少个由蓝色格子组成的连通分量?

处理所有的查询。

约束条件

  • 1N,M20001 ≤ N,M ≤ 2000
  • 1Q2000001 ≤ Q ≤ 200000
  • Si,jS_{i,j} 要么是 00 要么是 11
  • Si,jS_{i,j} 满足题目中给出的条件。
  • 1xi,1xi,2N(1iQ)1 ≤ x_{i,1} ≤ x_{i,2} ≤ N(1 ≤ i ≤ Q)
  • 1yi,1yi,2M(1iQ)1 ≤ y_{i,1} ≤ y_{i,2} ≤ M(1 ≤ i ≤ Q)

输入

输入从标准输入读取,格式如下:

NN MM QQ S1,1S_{1,1}..S1,MS_{1,M} : SN,1S_{N,1}..SN,MS_{N,M} x1,1x_{1,1} yi,1y_{i,1} xi,2x_{i,2} yi,2y_{i,2} : xQ,1x_{Q,1} yQ,1y_{Q,1} xQ,2x_{Q,2} yQ,2y_{Q,2}

输出

对于每个查询,打印区域内由蓝色格子组成的连通分量的数量。


示例输入 1

3 4 4
1101
0110
1101
1 1 3 4
1 1 3 1
2 2 3 4
1 2 2 4

示例输出 1

3
2
2
2

在第一个查询中,指定了整个网格。有三个由蓝色格子组成的连通分量,所以应该打印 33

在第二个查询中,指定了红色框中的区域。有两个由蓝色格子组成的连通分量,所以应该打印 22。注意,原始网格中属于同一连通分量的方格可能属于不同的连通分量。


示例输入 2

5 5 6
11010
01110
10101
11101
01010
1 1 5 5
1 2 4 5
2 3 3 4
3 3 3 3
3 1 3 5
1 1 3 4

示例输出 2

3
2
1
1
3
2