#P1996. 二维前缀和模板

    ID: 4859 传统题 1000ms 128MiB 尝试: 8 已通过: 6 难度: 2 上传者: 标签>算法前缀和二维数组模板普及−前缀和进阶

二维前缀和模板

题目描述

小A同学有着很强的计算能力,张老师为了检验小A同学的计算能力,写了一个 nnmm 列的矩阵数列。

张老师问了小A同学 kk 个问题,每个问题会先告知小A同学 44 个数 x1,y1,x2,y2x_1, y_1, x_2, y_2,表示这是矩阵中 22 个点的行列值。以这两个点为一个矩形的左上角和右下角,可以从矩阵中画出一个子矩阵,张老师请小A同学计算出这个子矩阵中所有数的和。

请你编程帮助张老师计算出结果。

输入格式

第一行包含三个整数 n,m,kn, m, k,分别表示矩阵的行数、列数和询问的次数。

接下来 nn 行,每行包含 mm 个整数,表示矩阵中的元素。

接下来 kk 行,每行包含四个整数 x1,y1,x2,y2x_1, y_1, x_2, y_2,表示一组询问,其中 (x1,y1)(x_1, y_1) 为子矩阵的左上角坐标,(x2,y2)(x_2, y_2) 为子矩阵的右下角坐标。

输出格式

kk 行,每行输出一个询问的结果,即对应子矩阵中所有元素的和。

样例

3 5 4
1 1 6 7 4
6 10 4 9 9
2 6 7 3 7
1 2 2 4
2 4 3 5
2 2 3 5
1 3 2 4
37
28
55
26

样例解释

  • 第一个询问:(1,2)(1,2)(2,4)(2,4),元素为第1行第2-4列:1、6、7;第2行第2-4列:10、4、9,总和 1+6+7+10+4+9=371+6+7+10+4+9 = 37
  • 第二个询问:(2,4)(2,4)(3,5)(3,5),元素为第2行第4-5列:9、9;第3行第4-5列:3、7,总和 9+9+3+7=289+9+3+7 = 28
  • 第三个询问:(2,2)(2,2)(3,5)(3,5),元素为第2行第2-5列:10、4、9、9;第3行第2-5列:6、7、3、7,总和 10+4+9+9+6+7+3+7=5510+4+9+9+6+7+3+7 = 55
  • 第四个询问:(1,3)(1,3)(2,4)(2,4),元素为第1行第3-4列:6、7;第2行第3-4列:4、9,总和 6+7+4+9=266+7+4+9 = 26

数据范围

  • 1n,m10001 \le n, m \le 1000
  • 1k2000001 \le k \le 200000
  • 1x1x2n1 \le x_1 \le x_2 \le n
  • 1y1y2m1 \le y_1 \le y_2 \le m
  • 矩阵内元素的值范围:1000元素值1000-1000 \le \text{元素值} \le 1000