前缀和,差分数组

  • 前缀和

  • 一维数组的前缀和

对于数组 a[0] - a[n],如果求区间 L~R之间的数组和(0<=L<=n, 0<=R<=n),那么就是将a[L] 和 a[R] 之间的所有的数相加,但是如果提前知道前L项的和sum[L] 以及前R项的和 sum[R],那么所求的结果就是 sum[L] - sum[R]。这里sum[L] 以及sum[R] 就是前缀和。

  • 二维数组的前缀和

如下图所示:设原数组为 a[5][5],表示二维前缀和的数组为 s[5][5]。

1、如果i==1,则 s[1][1] = a[1][1], s[1][j] += a[1][j], 1 <= j <= 5。

2、如果j==1,则 s[1][1] = a[1][1], s[i][1] += a[i][1], 1 <= i <= 5。

3、否则,s[i][j] = s[i-1][j] + s[i][j-1] - s[i-1][j-1] + a[i][j] 。比如 16 = 3 + 7 - 1 + 7。

  •  二维前缀和的练习

激光炸弹(UPC二维前缀和)

99. 激光炸弹

  • 差分数组

一个数组中的元素分别为:a, b, c, d

那么数组对应的差分数组为:a, b-a, c-b, d-c。

仔细观察差分数组可以发现有规律:a = a, b = a + (b-a), c = a + (b-a) + (c - b), d = a + (b-a) + (c-b) + (d-c)

  • 应用

  1. 区间修改

  2. 单点查询

  3. 区间查询

  • 学习

  1. 前缀和、二维前缀和与差分的小总结
  2. 差分数组概述
  3. 差分数组
  4. 树状数组区间修改、区间查询&&区间修改、单点查询
  5. 数据结构:差分数组
  6. 【算法竞赛进阶指南】0x02 前缀和差分 学习笔记
  • 练习

  1. IncDec序列
  2. 激光炸弹
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值