生动形象的理解二维前缀和

前言

P6180 【[USACO15DEC]Breed Counting S】这篇文章中,我介绍并使用了前缀和的方法来通过该题,这次来讲前缀和的扩展——二维前缀和。

什么是二维前缀和

首先,并不是针对二维数组中的每一横行作前缀和。

定义

这次,我们的前缀和数组 $b$ 的定义如下

如果您看不懂或者懒得看这个式子,不妨看看另一个形象一点的介绍

我们认为 $b{x,y}$ 就是 $a{x,y}$ ​左上方矩形的所有数之和。

我用 Excel 画了这么一张图,其中黄色为原数组 $a$ 黑色为前缀和数组 $b$ 红色部分为二者中相等的部分,也就是说 $b$ 的红色部分代表的是 $a$ 红色部分的和

计算方法

怎么得到 $b$ 数组呢?

如果我们要得到下图中被框起来的 $b$ 数组

可以如下图一样操作

不难发现,也就是加上 $b$ 中上方和左边的数(红色标识),去掉重复的部分(左上方橙色标识),加上原本没有的数(绿色标识)

给出公式

如何使用

要知道 $(x1,y1)-(x2,y2)$ 矩阵的值,一样可以由上述思想推出。

以求 $(2,2)-(3,3)$ 为例

经过观察可得答案就是

例题

先gugugu了。

文章作者: answerend42
文章链接: http://answerend42.github.io/2020/03/15/%E7%94%9F%E5%8A%A8%E5%BD%A2%E8%B1%A1%E7%9A%84%E7%90%86%E8%A7%A3%E4%BA%8C%E7%BB%B4%E5%89%8D%E7%BC%80%E5%92%8C/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 answerend42的Blog