标签:style blog http io ar color sp for on
题目:http://acm.hdu.edu.cn/showproblem.php?pid=1166
根据网上大神的简短代码模板自己重新打了一遍,也加深理解
#include<cstdio> #define lson l,m,rt<<1 #define rson m+1,r,rt<<1|1 const int maxn = 55555; int sum[maxn << 2]; void pushup(int rt) { sum[rt] = sum[rt << 1] + sum[rt << 1 | 1]; } void build(int l, int r, int rt) { if (l == r){ scanf("%d", &sum[rt]); return; } int m = (l + r) >> 1; build(lson); build(rson); pushup(rt); } void update(int p, int add, int l, int r, int rt) { if (l == r){ sum[rt] += add; return; } int m = (l + r) >> 1; if (p <= m)update(p,add,lson); else update(p,add,rson); pushup(rt); } int query(int L, int R, int l, int r, int rt) { if (L <= l&&r <= R) { return sum[rt]; } int m = (l + r) >> 1; int ret = 0; if (L <= m) ret += query(L, R, lson); if (R > m) ret += query(L, R, rson); return ret; } int main() { int T, n; scanf("%d", &T); for (int i = 1; i <= T; i++){ printf("Case %d:\n", i); scanf("%d", &n); build(1, n, 1); char op[10]; while (scanf("%s", op)){ if (op[0] == ‘E‘) break; int a, b; scanf("%d%d", &a, &b); if (op[0] == ‘Q‘) printf("%d\n",query(a, b, 1, n, 1)); else if (op[0] == ‘A‘) update(a, b, 1, n, 1); else update(a, -b, 1, n, 1); } } return 0; }
标签:style blog http io ar color sp for on
原文地址:http://www.cnblogs.com/-Unc/p/4111561.html