差分

用差分实现区间操作
这里写图片描述
取C数组为修改数组,C[i]表示的是i~n这些元素都加上C[i]这个数
样例:
ADD(1,3,1)
ADD(2,4,4)
ADD(3,7,3)
我们对[L,R]区间进行加value操作,在C[L]处加上value,在C[R+1]处减去value
最后求序列的每个位置变成了多少,只要看一下这个位置上C的前缀和就可以

升级版:对于一个n*m的表格,要求支持操作ADD(x1,y1,x2,y2,a),表示对于以(x1,y1)为左下角,(x2,y2)为右上角的矩形区域,每个元素都加上a。问最后的表格的样子
和一维版的做法类似。
用数组C存修改信息。在C[x1][y1]处加上a,在C[x2+1][y1]和C[x1][y2+1]处减a,在C[x2+1][y2+1]再加上a。
最后(i,k)位置上的数值就是C数组在(i,k)位置的前缀和。
树状数组区间修改单点查询的时候要用!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值