总结(18.5.31)

Posted jrzztd

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了总结(18.5.31)相关的知识,希望对你有一定的参考价值。

今天学习了树状数组,树状数组大概有单点更新,区间查询;区间更新,单点

查询;区间更新,区间查询三种。如果给你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)的主要内容,如果未能解决你的问题,请参考以下文章

BootStrap有用代码片段(持续总结)

BootStrap实用代码片段(持续总结)

回归 | js实用代码片段的封装与总结(持续更新中...)

查看发票组代码后的总结和有感

VsCode 代码片段-提升研发效率

Python学习总结