码迷,mamicode.com
首页 > 其他好文 > 详细

总结(18.5.31)

时间:2018-06-01 00:17:10      阅读:132      评论:0      收藏:0      [点我收藏+]

标签:总结   进制   没有   学习   区间查询   过程   模板   +=   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进行加减操作

就行了。

 

总结(18.5.31)

标签:总结   进制   没有   学习   区间查询   过程   模板   +=   int   

原文地址:https://www.cnblogs.com/JRZZTD/p/9119673.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!