#3712. 例2-二维数组区间更新与查询-差分2

例2-二维数组区间更新与查询-差分2

题目描述:
给定一个大小为 \( n \times m \) 的矩阵,初始时所有元素均为 0。接下来进行 ( t ) 次更新操作,每次操作给出 5 个整数 \( x_1, y_1, x_2, y_2, v \),表示将子矩阵区域 \([x_1, x_2] \times [y_1, y_2]\) 内的所有元素加上 \( v \);随后给出 \( q \) 次查询,每次查询给出一对坐标 \( (x, y) \),要求输出更新后该位置的最终值。请使用二维差分数组的方法高效地完成更新与查询。

输入格式:

  • 第一行包含两个整数 \( n \) \( m \)
  • 第二行包含两个整数 \( t \) \( q \)
  • 接下来 \( t \) 行,每行包含 5 个整数 \( x_1, y_1, x_2, y_2, v \) 表示一次更新操作。
  • 接下来 \( q \) 行,每行包含两个整数 \( x \) \( y \),表示一个查询。

输出格式:

  • 对每个查询,输出一行一个整数,表示该位置的最终值。

样例输入:

3 3
3 3
1 1 2 2 3
2 2 3 3 5
1 3 3 3 -2
1 1
2 2
3 3

样例输出:

3
8
3

样例说明:
初始矩阵:
$[ \begin{matrix} 0 & 0 & 0\\[4mm] 0 & 0 & 0\\[4mm] 0 & 0 & 0 \end{matrix} ] $

  • 操作 1: 更新子矩阵 \([1,2] \times [1,2]\) 加 3,矩阵变为
    $[ \begin{matrix} 3 & 3 & 0\\[4mm] 3 & 3 & 0\\[4mm] 0 & 0 & 0 \end{matrix} ]$
  • 操作 2: 更新子矩阵 \([2,3] \times [2,3]\) 加 5,矩阵变为
    $[ \begin{matrix} 3 & 3 & 0\\[4mm] 3 & 8 & 5\\[4mm] 0 & 5 & 5 \end{matrix} ]$
  • 操作 3: 更新子矩阵 \([1,3] \times [3,3]\) 加 -2,矩阵变为
    $[ \begin{matrix} 3 & 3 & -2\\[4mm] 3 & 8 & 3\\[4mm] 0 & 5 & 3 \end{matrix} ]$

查询结果:

  • 查询 (1,1):3
  • 查询 (2,2):8
  • 查询 (3,3):3