1166 敌兵布阵 树状数组单点修改
2015-04-10 16:08
309 查看
#include<stdio.h> #include<string.h> #include<algorithm> using namespace std; #define N 500000+10 int c ; int a ; int n; int lowbit(int x) { return x&(-x); } void updata(int t,int value) { for(int i=t;i<=n;i+=lowbit(i)) { c[i]+=value; } } int getSum(int x) { int sum=0; for(int i=x;i>=1;i-=lowbit(i)) { sum+=c[i]; } return sum; } int main() { int T; scanf("%d",&T); int k=1; while(T--) { int i,j; scanf("%d",&n); for(i=1;i<=n;i++) { scanf("%d",&a[i]); } memset(c,0,sizeof(c)); for(i=1;i<=n;i++) { updata(i,a[i]); } char str[12]; printf("Case %d:\n",k++); while(scanf("%s",str)!=EOF) { if(str[0]=='E') break; scanf("%d%d",&i,&j); if(str[0]=='Q') { printf("%d\n",getSum(j)-getSum(i-1)); } if(str[0]=='A') { updata(i,j); } if(str[0]=='S') { updata(i,-j); } } } return 0; }
相关文章推荐
- HDU 1166 敌兵布阵(树状数组 or 线段树 单点修改 区间求和)
- 【树状数组 单点修改,区间求值】hdu 1166 敌兵布阵
- 树状数组:HDU1166敌兵布阵 【单点更新,区间查询】
- hdu 1166 敌兵布阵 树状数组求区间和和修改点的值
- Hdu 1166 敌兵布阵 树状数组 或 线段树 单点更新,区间求和
- 树状数组、线段树模板(一)——单点更新 + HDU 1166 敌兵布阵
- 线段树(单点更新)/树状数组 HDOJ 1166 敌兵布阵
- hdu 1166 敌兵布阵 单点更新 树状数组 线段树 两种做法
- HDU 1166 敌兵布阵(树状数组||线段树单点更新)
- 【算法系列学习】线段树vs树状数组 单点修改,区间查询 [kuangbin带你飞]专题七 线段树 A - 敌兵布阵
- HDU 1166 敌兵布阵 (树状数组--单点更新,区间求值)
- HDOJ 题目1166 敌兵布阵(树状数组单点跟新)
- HDU 1166 敌兵布阵 (我的树状数组加线段树点修改模板)
- hdoj 1166 敌兵布阵 【单点更新+区间求和】 【线段树】 【树状数组】
- 【原创】【数据结构】一维树状数组的基本操作(单点修改,区间查询) (HDU1166 敌兵布阵)
- HDU-1166 敌兵布阵-树状数组
- hdoj&nbsp;1166&nbsp;敌兵布阵(树状数组)
- HDU-1166 敌兵布阵(树状数组和线段树)
- 敌兵布阵 1166 树状数组
- HDOJ 1166 敌兵布阵-------------树状数组 线段树