概述
#include<cstdio>
#include<cstring>
const int N = 50005;
int d[N], num[N], n, x, y;
char str[10];
int lowbit(int x) {
return -x & x;
}
void add(int i, int num) {
while(i <= n) {
d[i] += num;
i += lowbit(i);
}
}
void sub(int i, int num) {
while(i <= n) {
d[i] -= num;
i += lowbit(i);
}
}
int getSum(int i) {
int sum = 0;
while(i > 0) {
sum += d[i];
i -= lowbit(i);
}
return sum;
}
int main() {
int t;
scanf("%d", &t);
for(int k = 1; k <= t; k++) {
scanf("%d", &n);
memset(d, 0, sizeof(d));
for(int i = 1; i <= n; i++) {
scanf("%d", &num[i]);
add(i, num[i]);
}
printf("Case %d:n", k);
while(scanf("%s", str)) {
if(str[0] == 'E') break;
scanf("%d%d", &x, &y);
if(str[0] == 'Q') {
printf("%dn", getSum(y) - getSum(x - 1));
}
if(str[0] == 'A') {
add(x, y);
}
if(str[0] == 'S') {
sub(x, y);
}
}
}
return 0;
}```
最后
以上就是感性芝麻为你收集整理的hdu - 1166 (树状数组模板)的全部内容,希望文章能够帮你解决hdu - 1166 (树状数组模板)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复