标签:总结 进制 没有 学习 区间查询 过程 模板 += int
今天学习了树状数组,树状数组大概有单点更新,区间查询;区间更新,单点
查询;区间更新,区间查询三种。如果给你n个数,然后进行q次询问,
每次询问一个区间[x,y]的和,如果用暴力枚举的话,数据量大肯定是
会超时的,所以可以利用树状数组来优化。树状数组的具体操作
是根据下标二进制来优化的,过程比较复杂。
单点更新,区间查询的函数:
1 int lowbit(int t) 2 { 3 return t&(-t); 4 } 5 void add(int x,int y) 6 { 7 for(int i=x;i<=n;i+=lowbit(i)) 8 c[i]+=y; 9 } 10 int print(int x) 11 { 12 int ans=0; 13 for(int i=x;i;i-=lowbit(i)) 14 ans+=c[i]; 15 return ans; 16 }
这个模板代码我觉得还是没有问题的,但是我的水平
也就写模板吧。
然后今天还学了一下区间更新,单点查询,这个也
比较容易,只需每次对区间[l,r]的l和r-1进行加减操作
就行了。
标签:总结 进制 没有 学习 区间查询 过程 模板 += int
原文地址:https://www.cnblogs.com/JRZZTD/p/9119673.html