水题,无坑。
#include <cstdio> #include <cstdlib> #include <cstring> #include <algorithm> #include <iostream> #include <string> using namespace std; int c[100000]; int n; int kase = 1; int lowbit(int x) { return x&-x; } int sum(int x) { int ret = 0; while(x > 0) { ret += c[x]; x -= lowbit(x); } return ret; } void add(int x, int d) { while(x <= n) { c[x] += d; x += lowbit(x); } } int main() { int t; c[0] = 0; scanf("%d",&t); while(t--) { printf("Case %d:\n",kase++); memset(c, 0, sizeof(c)); scanf("%d",&n); for(int i = 1; i <= n; i++) { int temp; scanf("%d",&temp); add(i, temp); } string str; while(cin >> str) { if(str[0] == 'E') break; int i, j; cin >> i >> j; if(str[0] == 'A') add(i, j); if(str[0] == 'S') add(i, -j); if(str[0] == 'Q') printf("%d\n",sum(j) - sum(i-1)); } } return 0; }