#include<iostream>
using namespace std;
const int MAX=;
int tree[(MAX+)*];//n个叶子就有2*n-4*n个节点
int a[MAX+];
int n;
void getup(int root){
return void(tree[root]=tree[root*]+tree[root*+]);//两个孩子分别是root*2 和root*2+1
}
void btree(int l,int r,int root){//建树
if(l==r){
tree[root]=a[l];
return ;
}
int mid=(l+r)>>;
btree(l,mid,root*);
btree(mid+,r,root*+);//因为向下取整 mid必须加一 不然结束不了
getup(root);
}
int myquery(int l,int r,int L,int R,int root){//整个的思想是区间和肯定可以用二分的区间表示
if(l<=L&&r>=R) return tree[root];
int mid=(L+R)>>;
long long sum=;
if(l<=mid) sum+=myquery(l,r,L,mid,root*);//两边相加
if(r>mid) sum+=myquery(l,r,mid+,R,root*+);
return sum;
}
void add(int i,int value,int l,int r,int root){//重点!! 更新的过程
if(l==r) {tree[root]+=value;return ;}
int mid=(l+r)>>;
if(i<=mid) add(i,value,l,mid,root*);
else add(i,value,mid+,r,root*+);
getup(root);
}
int main(){
int t;
cin>>t;
int i=;
while(i<=t){
int flag=;
scanf("%d",&n);
for(int i=;i<=n;i++)
scanf("%d",&a[i]);
btree(,n,);
char ss[];
while(~scanf("%s",ss)){
if(ss[]=='A'){
int i,value;
scanf("%d %d",&i,&value);
add(i,value,,n,);
}
if(ss[]=='S'){
int i,value;
scanf("%d %d",&i,&value);
add(i,-*value,,n,);
}
if(ss[]=='Q'){
int a ,b;
scanf("%d%d",&a,&b);
if(flag){printf("Case %d:\n",i);flag=;}
printf("%d\n",myquery(a,b,,n,));
}
if(ss[]=='E') break;
}
i++;
}
}

题目链接:acm.hdu.edu.cn/status.php?user=YZBPXX&pid=1166&status=5

最新文章

  1. typeof,GetType
  2. C++中的迭代器
  3. SQLServer中char与varchar的区别
  4. Android动画之translate(位移动画)
  5. Android 显示原理简介
  6. JavaScript 的原型对象 Prototype
  7. ILSpy反编译工具的使用
  8. 从a站点跳转到b站点,通过url的参数判断是否让该用户选择身份
  9. java沙箱机制原理
  10. [Immutable.js] Working with Subsets of an Immutable.js Map()
  11. Hibernate 系列教程10-组成关系
  12. python的while嵌套 99乘法表 三角形和正方形
  13. 彻底理解Java的Future模式
  14. 超详细的 Linux CentOS 编译安装python3
  15. 剑指offer第二天
  16. SSE推送数据
  17. Houdini OpenCL
  18. $mount方法是用来挂载我们的Vue.extend扩展的
  19. Nginx(十二)-- Nginx+keepalived实现高可用
  20. ORDER BY 子句在视 图、内联函数、派生表、子查询和公用表表达式中无效

热门文章

  1. java实现spark常用算子之SortByKey
  2. 【JavaScript】js中的call方法
  3. webpack提取图片文件打包压缩
  4. 上述代码在JavaScript事件处理中
  5. springboot 自动装配
  6. Samba passwd smbpasswd and tdbsam
  7. scroll js 原生
  8. 如何设置树莓派 -Zero 自启动连接WIFI
  9. Galera Cluster 实现mysql的高可用 (Percona XtraDB Cluster)
  10. ORALCE 数据库字符串处理、常用函数