模式二(区间更新,单点查询)

用树状数组实现模式二,借助了编程技巧。此时的区间更新,其实是在两个位置进行了单点更新。而单点查询,实际上是进行了区间求和操作。

输入的原数组a[], 树状数组c[],单点更新函数update(i,val),区间查询函数query(i)

如,将[x,y]内的数都加1,查询区间内某位置z的值,代码可以有两种写法。

1.update(x-1,-1);

update(y,1);//两处单点更新

query(z);//采用向上求和

2.update(x,1);

update(y+1,-1);//两处单点更新

query(z);//采用向下求和

两种写法的实质相同,我们所要的值是query(z),也就是将一段区间的c[]值求和,这段区间以c[z]为端点。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值