前缀和
前缀和
目的:求原数组中某段数的和(O(1))
具体做法:做一个预处理,定义一个新数组储存原数组前i个数的和
一维前缀和:
预处理:
1 | int sum[N],a[N]; |
查找:(求l~r之间的数)
1 | num=sum[r]-sum[l-1]; |
二维前缀和:(当成方格形)
预处理:
1 | int sum[N][M],a[N][M]; |
查找:(求(l1,r1)~(l2,r2)之间的数)
1 | num=sum[l2][r2]-sum[l2][r1-1]-sum[l1-1][r2]+sum[l1][r1]; |
高维前缀和:(类比)
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 尔玉博客!