线段树1.0 求区间sum
来源:互联网 发布:单片机课后题答案 编辑:程序博客网 时间:2024/05/29 16:55
哇第一次手写线段树好激动好激动好激动!
#include<cstdio>#include<iostream>#include<algorithm>#include<cstring>#include<string>using namespace std;int a[20000+5];struct node{int l, r, sum;}tree[20000*4];int ans;int built(int root, int l, int r){tree[root].l=l;tree[root].r=r;int mid=l+r>>1;if(l == r) tree[root].sum=a[l];else {built(root<<1, l, mid);built(root<<1|1, mid+1, r);tree[root].sum=tree[root*2].sum+tree[root*2+1].sum;}}int search(int root, int ll, int rr){int mid = (tree[root].l+tree[root].r)/2;if(tree[root].l>=ll&&tree[root].r<=rr) return tree[root].sum;if(mid>=rr) return search(root<<1, ll, rr);else if(mid<ll) return search (root<<1|1, ll, rr);else{ return search(root<<1, ll, mid) + search(root<<1|1, mid+1, rr) ;}}int main(){int n;scanf("%d", &n);int i, j;for(i = 1; i <= n; i++) scanf("%d", &a[i]);built(1, 1, n);int ll, rr;while(~scanf("%d%d", &ll, &rr)){ans=0;printf("***\n");printf("%d\n", search(1, ll, rr));}return 0;}/*51 2 3 4 52 4*/
阅读全文
0 0
- 线段树1.0 求区间sum
- 线段树求区间最大值
- 线段树区间求最大值
- 线段树求区间最大值
- 线段树求区间最值
- hdu1754-线段树(求区间最大值)
- hdu3074-线段树(求区间乘积)
- hdu 1754 线段树 求区间内最值
- 线段树--求区间最大差值
- 线段树求区间和(单点更新)
- Python 线段树求区间覆盖
- 线段树求区间和模板
- 线段树 单点更新求区间和
- 线段树求区间最值
- [线段树] [求区间最大] [定点修改]
- POJ2823(线段树求区间最值)
- hdu2795-Billboard (线段树求区间最大值)
- hdu1556 线段树区间更新 求单点
- 练习(五)
- 服务器代码优化
- Ruby变量
- Swiper
- windows安装rabbitmq 3.6.9
- 线段树1.0 求区间sum
- DLL脚本之家
- if 简写
- 在ansbile中直接执行yml文件
- Linux 挂载磁盘
- C++ 递归,移位Bitset
- Andriod 中的异步消息机制
- 以烘培微信预约系统为例,让您体验动态实时快速反馈的微信预约系统!
- H5使用localResizeIMG插件压缩图片后并上传