树状数组--一维模板
来源:互联网 发布:数据分析师证书难不难 编辑:程序博客网 时间:2024/05/22 13:10
树状数组不是很懂只能给个模板了。
原理是二分法。
#include<cstdio>#include<cstring>#include<algorithm>using namespace std;int tree[100005];int n;int lowbit(int x){ return x&(-x);}void add(int x,int y){ while(x<=n) { tree[x]+=y; x+=lowbit(x); }}int sum(int i){ int s=0; while(i>0) { s+=tree[i]; i-=lowbit(i); } return s;}int main(){ while(scanf("%d",&n)!=EOF) { memset(tree,0,sizeof(tree));//初始化数组 for(int i=1;i<=n;i++)//创建树状数组 { int x; scanf("%d",&x); add(i,x); sum(i); } for(int i=1;i<=n;i++) printf("%d%c",tree[i],i==n?'\n':' ');//改变前的树状数组 int x,y; scanf("%d%d",&x,&y); add(x,y); //使第x个数加上y for(int i=1;i<=n;i++) printf("%d%c",tree[i],i==n?'\n':' ');//改变后的树状数组 int l; scanf("%d\n",&l); printf("%d",sum(l));//求前l项的和 } return 0;}
输入:
4
1 2 3 4
2 1
3
输出
1 3 3 10 //改变前的树状数组
14 3 11 //改变后的树状数组
7 //改变后数组的前n项和
阅读全文
0 0
- 一维树状数组模板
- 《一维树状数组》模板
- 树状数组--一维模板
- 【树状数组】树状数组一维二维模板
- hdu4000(一维树状数组模板)
- 树状数组模板(一维的)
- 一维树状数组模板【pascal】
- 一二维树状数组模板
- 【模板篇】树状数组们(一)
- 一维树状数组
- 一维树状数组
- 一维树状数组~
- 一维树状数组
- 一维树状数组
- 树状数组的讲解感觉挺好,和我的一维,二维,树状数组的模板,希望对大家有用
- 一维 二维树状数组
- 一维树状数组小结
- 树状数组,一维,二维
- 新零售将更加关注以人为本,以用户为核心
- Python 基于语法提取音节个数的方法(可能不完美,欢迎指教)
- matlab快速入门
- 并行框架forkjion
- POJ 3009 Curling 2.0 (dfs)
- 树状数组--一维模板
- UVALive4671(FFT/NTT+后缀自动机/哈C)
- JVM——虚拟机字节码执行引擎(运行时栈帧结构、方法调用(解析,动静态分配)、字节码解释引擎)
- C# 和 Java的区别
- Informatica Schedule调用还是shell调用
- Python处理逆波兰表达式
- zookeeper服务器初始化的过程
- spring解决延迟加载问题--no session
- easyUI中combobox的下拉框数据背景颜色设置