HDU-1166-敌兵布阵
2013-04-15 16:05
260 查看
#include<iostream> #define N 50005 int num ; int t,n,tmp; char c; char str_c[20]; int x,y; int low_bit(int x) { return (-x)&x; } void update(int p,int d) { while(p<=n) { num[p]+=x; p+=low_bit(p); } } int sum(int p) { int sum=0; while(p>0) { sum+=num[p]; p-=low_bit(p); } return sum; } void cmd() { while (std::cin>>str_c) { switch (str_c[0]){ case 'A': std::cin>>x>>y; update(x,y); break; case 'S': std::cin>>x>>y; update(x,-y); break; case 'Q': std::cin>>x>>y; std::cout<<sum(y)-sum(x-1)<<std::endl; break; case 'E': return; default: break; } } } int main() { std::cin>>t; for(int i=0;i!=t;i++){ std::cin>>n; for(int i=0;i!=n;i++){ std::cin>>tmp; update(i+1,tmp); } std::cout<<"Case "<<i+1<<":"<<std::endl; cmd(); memset(num,sizeof(num),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 敌兵布阵(树状数组 or 线段树)
- 树状数组浅谈 HDU 1166 敌兵布阵
- HDU 1166 敌兵布阵【线段树】
- HDU 1166 - 敌兵布阵(线段树)
- hdu 1166 敌兵布阵【线段树】单点更新,区间求和
- HDU - 1166 A - 敌兵布阵 线段树单点更新模板
- [ACM] hdu 1166 敌兵布阵 (线段树,单点更新)
- 敌兵布阵 - HDU 1166 单点更新线段树
- HDU 1166 敌兵布阵 ( 树状数组,线段树)