一维前缀和预处理 $\Theta(n)$,二维 $\Theta(n^2)$,查询都是 $\Theta(1)$。
一维前缀和
pre[]
用于计算前缀和,a[]
为原数组。
1 | 初始化: pre[i] = pre[i - 1] + a[i]; |
示例程序
1 |
|
运行结果:
1 | How many numbers? 10 |
二位前缀和
应用容斥原理。
pre[][]
用于计算前缀和,a[][]
为原数组。
1 | 初始化: |
记矩形左上角坐标为 [x1][y1]
,右下角坐标为 [x2][y2]
,则从此矩形的和求法如下:
1 | pre[x2][y2] - pre[x1 - 1][y2] - pre[x2][y1 - 1] + pre[x1 - 1][y1 - 1]; |
其中,pre[i][j]
表示从 a[1][1]
到 a[i][j]
的矩形和。
示例程序
1 |
|
运行结果:
1 | Size?(a*b) 5 * 6 |
本文作者:Xecades
本文链接:https://blog.xecades.xyz/drafts/prefix.html
文章默认使用 CC BY-NC-SA 4.0 协议进行许可,使用时请注意遵守协议。
评论