初识树状数组(模板)
来源:互联网 发布:区块链网络结构 编辑:程序博客网 时间:2024/06/06 10:45
树状数组:优雅而简短的数据结构
学习树状数组:http://blog.csdn.net/int64ago/article/details/7429868(安利一篇特别好的博文,非常的详细)
模板:
//更新树状数组 void add(int k,int num)//k是数组下标,num为变化数值的大小{while(k<=n) //n是数组的大小 {tree[k]+=num;k+=k&-k;//lowbit(k),比如10100得出来的就是100 11101000得出来的就是1000 }} //求和 1~k int read(int k){int sum=0;while(k){sum+=tree[k];k-=k&-k;}return sum;}
//区间更新int update(int x,int y,int num){add(x,num);add(y+1,-num);}
//区间求解最值,a数组是原序列,c是储存该区间最大值的数组int lowbit(int x){return x&-x;}//改变只能从最左边的数字开始改变void change(int r) { c[r] = a[r]; for(int i = 1; i < lowbit(r); i <<= 1) c[r] = max(c[r], c[r-i]);}//查询得出结果int getmax(int l, int r) { int ret = a[r]; while(l <= r) { ret = max(ret, a[r]); for(--r; r - l >= lowbit(r); r -= lowbit(r)) ret = max(ret, c[r]); } return ret;}
阅读全文
1 0
- 初识树状数组(模板)
- 树状数组(初识)
- 树状数组(模板)
- 树状数组 (模板)
- 树状数组(模板)
- (树状数组)模板
- 树状数组(模板)
- 树状数组 (模板)
- 树状数组(模板+原理)
- 无题(树状数组模板)
- 【模板】树状数组(详解)
- 初识树状数组
- 树状数组模板+poj1195(二维树状数组)
- hdu4000(一维树状数组模板)
- hdu 1892(二维树状数组模板)
- hdu 3584 (三维树状数组模板 )
- 树状数组求逆序数(模板)
- 敌兵布阵(树状数组模板题)
- nfs挂载错误wrong fs type, bad option, bad superblock
- Httpservlet cannot be resolved to a type的原因与解决方法
- DOM概念
- 串口驱动设计(基于S3C6410)
- js 实现图片自动轮换效果
- 初识树状数组(模板)
- Python3.6.1+selenium+pycharm安装
- Glide 4.0 相比 Glide 3.0 及使用详解
- 搭建zookeeper集群
- Tabular系列之问题1:如何利用其他人的账号进行权限测试?
- Android:应用启动优化
- 解决javascript向后台传输汉字乱码
- shell中的clear命令实现
- [USACO GOLD] 选做