#636. 棋盘滤镜:明暗差值

棋盘滤镜:明暗差值

棋盘滤镜:明暗差值

故事背景

一款照片后期软件提供了“棋盘滤镜”:它在图像网格上交替增强与减弱亮度。为了评估滤镜效果,工程师需要计算任意矩形区域内“增强像素之和减去减弱像素之和”的差值。

题目描述

给定一个 n×m 的整数矩阵 a 表示像素强度。定义在 1 基坐标下,若 (i+j) 为偶数则该格为“明”(加号),若 (i+j) 为奇数则该格为“暗”(减号)。

有 q 次询问,每次给出矩形 (x1, y1) 到 (x2, y2)。请输出该矩形内“明格子的数值之和 − 暗格子的数值之和”的结果。

输入格式

  • 第一行包含三个整数 n、m、q。
  • 接下来 n 行,每行 m 个整数,表示矩阵 a。
  • 接下来 q 行,每行四个整数 x1、y1、x2、y2。

输出格式

输出 q 行,每行一个整数,表示对应矩形的明暗差值。

输入输出样例 #1

输入 #1

2 3 2
1 2 3
4 5 6
1 1 2 3
1 2 2 3

输出 #1

-3
0

样例解释 #1

在 1 基下,(i+j) 偶数为明、奇数为暗。第一问区域内明暗差值为 (1-2+3-4+5-6) = -3;第二问为 (2-3+5-6)= -2,但注意坐标覆盖 (1,2)-(2,3) 的四格中明暗分布为 {暗,明;明,暗},计算为 (−2+3+5−6)=0。

说明/提示

  • 数据范围示例:1 ≤ n,m ≤ 1000;1 ≤ q ≤ 2×10^5;-10^9 ≤ a[i][j] ≤ 10^9。
  • 思路提示:可构造新矩阵 b[i][j] = a[i][j] * ( ( (i+j) % 2 == 0 ) ? 1 : -1 ),对 b 做二维前缀和后即可 O(1) 回答查询。