#4296. 瓷砖图案(Tile Pattern)

瓷砖图案(Tile Pattern)

题目描述

有一个 10910^910910^9 的方格网格。让 (i,j)(i,j) 表示从上往下数第 (i+1)(i+1) 行、从左往右数第 (j+1)(j+1) 列的方格 (0i,j<109)(0 \leq i,j < 10^9)。(注意这种不寻常的索引分配。)

每个方格要么是黑色要么是白色。方格 (i,j)(i,j) 的颜色由字符 P[imodN][jmodN]P[i \bmod N][j \bmod N] 表示,其中 B 表示黑色,W 表示白色。这里,amodba \bmod b 表示 aa 除以 bb 的余数。

回答 QQ 个查询。

每个查询给出四个整数 A,B,C,DA,B,C,D,要求你找出以 (A,B)(A,B) 为左上角、(C,D)(C,D) 为右下角的矩形区域内包含的黑色方格数量。

输入格式

输入从标准输入中按以下格式给出。这里,queryi\text{query}_i 是要处理的第 ii 个查询。

NN QQ

P0,0P_{0,0} P0,1P_{0,1} \cdots P0,N1P_{0,N-1}

P1,0P_{1,0} P1,1P_{1,1} \cdots P1,N1P_{1,N-1}

\vdots

PN1,0P_{N-1,0} PN1,1P_{N-1,1} \cdots PN1,N1P_{N-1,N-1}

query1query_1

query2query_2

\vdots

queryQquery_Q
每个查询按以下格式给出:

A B C D

输出格式

按照题目要求输出查询的答案,每个答案占一行。

样例

3 2
WWB
BBW
WBW
1 2 3 4
0 3 4 5
4
7
10 5
BBBWWWBBBW
WWWWWBBBWB
BBBWBBWBBB
BBBWWBWWWW
WWWWBWBWBW
WBBWBWBBBB
WWBBBWWBWB
WBWBWWBBBB
WBWBWBBWWW
WWWBWWBWWB
5 21 21 93
35 35 70 43
55 72 61 84
36 33 46 95
0 0 999999999 999999999
621
167
44
344
500000000000000000

样例1解释

下图展示了网格的左上部分。

对于第一个查询,以 (1,2)(1,2) 为左上角、(3,4)(3,4) 为右下角的矩形区域(图中红框所围区域)包含四个黑色方格。
对于第二个查询,以 (0,3)(0,3) 为左上角、(4,5)(4,5) 为右下角的矩形区域(图中蓝框所围区域)包含七个黑色方格。

数据范围

  • 1N10001 \leq N \leq 1000
  • P[i][j]P[i][j]WB
  • 1Q2×1051 \leq Q \leq 2 \times 10^5
  • 0AC<1090 \leq A \leq C < 10^9
  • 0BD<1090 \leq B \leq D < 10^9
  • N,Q,A,B,C,DN, Q, A, B, C, D 都是整数。

来源

  • AtCoder ABC331D