HDU1166 敌兵布阵 单点更新+区间求和
2017-11-10 15:26
375 查看
对于同样的单点更新和区间求和功能,树状数组空间上优于线段树,且代码更简便。
#include<cstdio> #include<cstring> using namespace std; int N,c[50005]; int lowbit (int i){ return i&(-i); } //让点i值加value void add(int i,int value){ while(i<=N){ c[i]+=value; i+=lowbit(i); } } //求区间[1,i]的和 int sum(int i){ int sum=0; while(i>0){ sum+=c[i]; i-=lowbit(i); } return sum; } int main(){ int t,cas=0,d; scanf("%d",&t); while(t--){ printf("Case %d:\n",++cas); scanf("%d",&N); memset(c,0,sizeof(c)); for(int i=1;i<=N;i++){ scanf("%d",&d); add(i,d); } char command[15]; int x,y; while(~scanf("%s",command)&&command[0]!='E'){ scanf("%d%d",&x,&y); if(command[0]=='Q') printf("%d\n",sum(y)-sum(x-1)); else if(command[0]=='A') add(x,y); else add(x,-y); } } return 0; }
相关文章推荐
- hdu1166 敌兵布阵(线段树单点更新+区间求和)
- hdu 1166 敌兵布阵(线段树之 单点更新+区间求和)
- hdu 1166 敌兵布阵(单点更新及区间求和)
- HDU 1166 敌兵布阵(区间求和+单点更新)
- hdu 1166 敌兵布阵【线段树】单点更新,区间求和
- [HDU 1166] 敌兵布阵 (单点更新区间求和)
- HDU 1166 敌兵布阵 数据结构+树状数组+(单点更新区间求和)
- HDU 1166 敌兵布阵(线段树单点更新+区间求和)
- Hdu 1166 敌兵布阵 树状数组 或 线段树 单点更新,区间求和
- hdu 1166 敌兵布阵(线段树单点更新(a位置的值+/-b)+区间求和)
- HDOJ(HDU).1166 敌兵布阵 (ST 单点更新 区间求和)
- 线段树 hdu 1166 敌兵布阵 单点更新区间求和
- HDU 1166 敌兵布阵(线段树单点更新区间求和)
- HDU 1166 敌兵布阵【线段树,树状数组入门题,单点更新,区间求和】
- hdu 1166 敌兵布阵 (单点更新,区间求和)
- 线段树 hdu 1166 敌兵布阵 单点更新区间求和
- 学习线段树-【线段树-单点更新,区间求和】hdu 1166 -敌兵布阵
- hdu 1166 敌兵布阵 (线段树 单点更新 区间求和)
- HDU 1166-敌兵布阵(线段树:单点更新,区间求和)
- hdu 1166 敌兵布阵(线段树-单点更新,区间求和)