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

来源:互联网 发布:蚂蚁信息源码 编辑:程序博客网 时间:2024/06/08 04:50

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

输入的原数组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]为端点。

阅读全文
0 0