hdu 1166 敌兵布阵
2013-06-02 22:59
260 查看
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1166;
树状数组:
View Code
树状数组:
#include<cstdio> #include<cstring> #include<iostream> #include<algorithm> using namespace std; const int maxn = 50050; int tree[4*maxn]; int a[maxn]; int n,T; char ch[10]; void build(int u,int l,int r){ if(l == r){ tree[u] = a[l]; return; } int mid = (l + r)>>1; build(2*u,l,mid); build(2*u+1,mid+1,r); tree[u] = tree[2*u] + tree[2*u+1]; } void update(int u,int l,int r,int goal,int num){ if(l == r){ tree[u] += num; return; } int mid = (l+r)/2; //printf("%d %d %d\n",l,r,mid); if(goal <= mid) update(2*u,l,mid,goal,num); else update(2*u+1,mid+1,r,goal,num); tree[u] = tree[2*u] + tree[2*u+1]; //printf("tree %d %d %d %d %d\n",u,tree[u] ,2*u,tree[2*u] ,tree[2*u+1]); } int query(int u,int l,int r,int tl,int tr){ if(tl<=l && r<=tr){ return tree[u]; } int mid = (l + r)/2; if(tr <= mid) return query(2*u,l,mid,tl,tr); else if(tl > mid) return query(2*u+1,mid+1,r,tl,tr); else return query(2*u,l,mid,tl,tr)+query(2*u+1,mid+1,r,tl,tr); } int main() { //if(freopen("input.txt","r",stdin)== NULL) {printf("Error\n"); exit(0);} cin>>T; for(int t=1;t<=T;t++){ cin>>n; memset(tree,0,sizeof(tree)); for(int i=1;i<=n;i++) cin>>a[i]; int tl,tr; build(1,1,n); printf("Case %d:\n",t); cin>>ch; while(strcmp(ch,"End")){ if(!strcmp(ch,"Query")){ scanf("%d%d",&tl,&tr); int ans = query(1,1,n,tl,tr); printf("%d\n",ans); } else if(!strcmp(ch,"Add")){ int a,b; scanf("%d%d",&a,&b); update(1,1,n,a,b); } else if(!strcmp(ch,"Sub")){ int a,b; scanf("%d%d",&a,&b); update(1,1,n,a,-b); } scanf("%s",ch); } } return 0; }
View Code
相关文章推荐
- 学习线段树-【线段树-单点更新,区间求和】hdu 1166 -敌兵布阵
- [ACM] hdu 1166 敌兵布阵(树状数组)
- HDU 1166 敌兵布阵
- hdu 1166 敌兵布阵
- 整理的树状数组模板 & 敌兵布阵 HDU - 1166
- HDU1166敌兵布阵
- HDU 1166 敌兵布阵 (线段树基础&树状数组基础)
- HDU 1166 敌兵布阵
- hdu 1166 敌兵布阵(线段树模板题)
- hdu 1166 敌兵布阵(线段树)
- HDU 1166 敌兵布阵 解析
- HDU 1166 敌兵布阵
- Hdu 1166 敌兵布阵
- HDU 1166 敌兵布阵(树状数组||线段树单点更新)
- HDU_1166_敌兵布阵
- HDU 1166 敌兵布阵 (线段树)
- HDU-1166-敌兵布阵【树状数组】
- HDU - 1166 敌兵布阵
- HDU-1166 敌兵布阵
- (hdu 1166)敌兵布阵(线段树入门,单点更新)