作业介绍

二维前缀和

二维前缀和用来维护某一个矩阵内所有数字的和。(必须是矩阵,而不能是一个不规则图形,你可以理解为一个长方形)。

定义:sumi, jsum_{i,\ j} 即以 (1,1)(1,1)左上角 ,以 (i,j)(i,j)右下角 构成的 矩阵 内的所有元素的和。

它的维护是这样的:

$$sum_{i,\ j}=sum_{i-1,\ j}+sum_{i,\ j-1}-sum_{i-1,\ j-1}+a_{i,\ j} $$

image

输入的推导

第一部分

sumi, jsum_{i,\ j} :表示以 (1,1)(1,1) 为左上角,(i, j)(i,\ j) 为右下角构成的矩阵的数字之和。

蓝 + 黄 + 绿 + 橙 四部分的和。

image

第二部分

sumi1, jsum_{i-1,\ j} :表示以 (1,1)(1,1) 为左上角,(i1, j)(i-1,\ j) 为右下角构成的矩阵的数字之和。 0. 即 蓝 + 黄 两部分的和。

image

第三部分

sumi, j1sum_{i,\ j-1} :表示以 (1,1)(1,1) 为左上角,(i, j1)(i,\ j-1) 为右下角构成的矩阵的数字之和。

蓝 + 绿 两部分的和。

image

第四部分

sumi1, j1sum_{i-1,\ j-1} :表示以 (1,1)(1,1) 为左上角,(i1, j1)(i-1,\ j-1) 为右下角构成的矩阵的数字之和。

这部分的和。

image

总结

$sum_{i,\ j}=sum_{i-1,\ j}+sum_{i,\ j-1}-sum_{i-1,\ j-1}+a_{i,\ j}$

蓝 + 黄 + 绿 + 橙 = (蓝 + 黄) + (蓝 + 绿) - 蓝 + 橙 最终求得了 sumi, jsum_{i,\ j}

image

子矩阵的和的计算

注意这里必须依赖定义计算,也就是需要获取子矩阵的左上角和右下角坐标,其余不能直接套公式。

$$sum_{x_2,\ y_2}-sum_{x_1-1,\ y_2}-sum_{x_2,\ y_1-1}+sum_{x_1-1,\ y_1-1} $$

其中 (x1, y1)(x_1,\ y_1) 为待计算的子矩阵的左上角坐标,(x2, y2)(x_2,\ y_2) 为待计算的子矩阵的右下角的坐标。

子矩阵和的推导

第一部分

sumx2, y2sum_{x_2,\ y_2}: 以 (1,1)(1,1) 为左上角,(x2, y2)(x_2,\ y_2) 为右下角的矩阵元素之和,即图中 绿 + 蓝 + 橙 + 黄 四部分的和。

image

第二部分

sumx11, y2sum_{x_1-1,\ y_2}: 以 (1,1)(1,1) 为左上角,(x11, y2)(x_1-1,\ y_2) 为右下角的矩阵元素之和,即图中 绿 + 蓝 两部分的和。

image

第三部分

sumx2, y11sum_{x_2,\ y_1-1}: 以 (1,1)(1,1) 为左上角,(x2, y11)(x_2,\ y_1-1) 为右下角的矩阵元素之和,即图中 绿 + 橙 两部分的和。

image

第四部分

sumx11, y11sum_{x_1-1,\ y_1-1}: 以 (1,1)(1,1) 为左上角,(x11, y11)(x_1-1,\ y_1-1) 为右下角的矩阵元素之和,即图中 绿 一部分的和。

image

总结

因此公式

$$sum_{x_2,\ y_2}-sum_{x_1-1,\ y_2}-sum_{x_2,\ y_1-1}+sum_{x_1-1,\ y_1-1} $$

可以概括为 绿 + 蓝 + 橙 + 黄 - (绿 + 蓝) - (绿 + 橙) + 绿 = 黄

概括起来就是总的减去上面的减去左边的,加上多减去的部分。

image

应用

  • 同一维前缀和一样,有的时候题目会直接可以获取到矩阵的左上角以及右下角坐标,然后套用模板求解。(若给定矩阵不是左上角和右下角,需要自己转换)
  • 通过枚举左上角或右下角,同时知道所求矩阵的长和宽,类似于一维计算另一个端点的方法,计算出另一个角的横纵坐标,然后使用公式求解。
  • 也可以用来维护某一个矩阵内某个数值的个数,例如维护一个矩阵内有几个奇数。

题目

认领作业后才可以查看作业内容。
状态
正在进行…
题目
4
开始时间
2026-3-13 0:00
截止时间
2034-3-10 23:59
可延期
24 小时