hdu1166 敌兵布-线段树的简单应用-查询更改
来源:互联网 发布:iphone6s没有4g网络 编辑:程序博客网 时间:2024/06/04 19:03
题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=1166
思路:线段树的简单更新查找应用
代码:
#include<cstdio>#include<iostream>using namespace std;#define maxn 50000struct mtree{ int b,e;//b-e为区间 int sum;}tree[maxn*4];void build(int node,int b,int e){ tree[node].b=b; tree[node].e=e; tree[node].sum=0; if(b==e) return; int mid=(b+e)/2; //左儿子 if(b<=mid) { build(node*2,b,mid); } //右儿子 if(mid<e) build(node*2+1,mid+1,e);}void update(int node,int n,int x){ if(tree[node].b==tree[node].e && tree[node].e ==n) { tree[node].sum+=x; return; } int mid=(tree[node].b+tree[node].e)/2; if(n<=mid) update(node*2,n,x);//往左查找 else update(node*2+1,n,x); tree[node].sum=tree[node*2].sum+tree[node*2+1].sum;}int query(int node,int b,int e){ int ans1=0,ans2=0; if(tree[node].b>=b&&tree[node].e<=e)//查询空间包括了树的区间才能取值 { return tree[node].sum; } int mid=(tree[node].b+tree[node].e)/2; if(b<=mid) ans1=query(node*2,b,e); if(mid<e) ans2=query(node*2+1,b,e); return ans1+ans2;}int main(){ int t,i,j; scanf("%d",&t); for(j=1;j<=t;++j) { int n,a; char s[10]; int x,y; scanf("%d",&n); build(1,1,n);//建树 for(i=1;i<=n;++i) { scanf("%d",&a); update(1,i,a); } printf("Case %d:\n",j); while(scanf("%s",s)) { if(s[0]=='E') break; if(s[0]=='A') { scanf("%d%d",&x,&y); update(1,x,y); } if(s[0]=='S') { scanf("%d%d",&x,&y); update(1,x,-y); } if(s[0]=='Q') { scanf("%d%d",&x,&y); printf("%d\n",query(1,x,y)); } } } return 0;}
2 0
- hdu1166 敌兵布-线段树的简单应用-查询更改
- HDU1166敌兵布阵 简单线段树
- 【单点更新,区间查询,线段树】【HDU1166】【敌兵布阵】
- HDU1166 敌兵布阵(线段树 单点更新 区间查询)
- hdu1166 敌兵布阵 线段树 单点更新区间查询
- 线段树-点修改区间查询--hdu1166敌兵布阵
- HDU1166:敌兵布阵(线段树点更新,区间查询)
- HDU1166:敌兵布阵(线段树单点更新,区间查询)
- 线段树 hdu1166 (敌兵布阵)
- 【线段树】 hdu1166 敌兵布阵
- hdu1166 敌兵布阵 线段树
- hdu1166敌兵布阵 (线段树)
- hdu1166 敌兵布阵,线段树
- HDU1166 敌兵布阵(线段树)
- hdu1166 敌兵布阵 线段树
- hdu1166- 敌兵布阵线段树
- 【线段树】hdu1166敌兵布阵
- hdu1166 敌兵布阵(线段树)
- C++实验四-求1000以内所有偶数的和
- lucene FieldCache 内部细节和使用方式分享
- java中调用声明没实现方法体的类完全运行正常
- iOS企业账号申请
- 【hdu5538】【2015ACM/ICPC亚洲区长春站 】House Building 题意&题解&代码
- hdu1166 敌兵布-线段树的简单应用-查询更改
- Hadoop日志
- c++第4次作业
- toLocaleString的好玩的地方
- C#基础知识之抽象类
- c++第四次上机实验
- 3年项目管理回顾
- 使用阿里云服务器的总结二-----目录权限
- 字符串匹配算法以及实现 转载