树状数组的探究
简介
树状数组具有常熟小,代码简单的优点,然而,我只用它做了比较简单的数套数
树状数组只能做一种操作:单点修改, 前缀查询
But, 我们可以通过建立辅助数组来实现,区间查询,区间修改,最大值查询 等操作
各种实现
区间修改,单点查询
因为我们只能做前缀查询,所以一个和自然的想法就是查询在前面所有数的区间修改中对本数做的贡献,然后本数就是这个贡献加上原数就行了
实现:
- 用\(B[i]\)数组记录影响
- 修改操作, \([L, R]\)加\(K\),那么\(L\)之后的就\(+K\),\(R+1\)之后要消除这个影响,所以\(R+1\)之后\(-K\)