hdu1166之树状数组入门
2014-03-08 16:34
381 查看
#include <iostream> #include <cstdio> #include <cstdlib> #include <cstring> #include <string> #include <queue> #include <algorithm> #include <map> #include <cmath> #include <iomanip> #define INF 99999999 typedef long long LL; using namespace std; const int MAX=50000+10; int n; int sum[MAX],c[MAX]; int lowbit(int x){//计算2^k return x&(-x); } void Update(int x,int y){ while(x<=n){ c[x]+=y; x=x+lowbit(x); } } int Query(int x){ int sum=0; while(x>0){ sum+=c[x]; x=x-lowbit(x); } return sum; } int main(){ int t,x,y,k,num=0; char a[10]; scanf("%d",&t); while(t--){ scanf("%d",&n); for(int i=1;i<=n;++i)scanf("%d",sum+i),sum[i]+=sum[i-1]; for(int i=1;i<=n;++i){ k=lowbit(i); c[i]=sum[i]-sum[i-k]; } printf("Case %d:\n",++num); while(scanf("%s",a),a[0] != 'E'){ cin>>x>>y; if(a[0] == 'A')Update(x,y); else if(a[0] == 'S')Update(x,-y); else printf("%d\n",Query(y)-Query(x-1));//cout<<Query(y)-Query(x-1)<<endl; } } return 0; }
相关文章推荐
- 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 敌兵布阵(树状数组)
- hdu 1166 线段树树状数组 Java解法
- HDU 1166 && HLG 1794 敌兵布阵(树状数组)
- HDU 1166 敌兵布阵 树状数组-(模板)
- hdu 1166 敌兵布阵(简单线段树or树状数组)
- hdu 1166 敌兵布阵(树状数组 | 线段树)
- HDU 1166 敌兵布阵(树状数组)