标签:des style blog class code c
1 10 1 2 3 4 5 6 7 8 9 10 Query 1 3 Add 3 6 Query 2 7 Sub 10 2 Add 6 3 Query 3 10 End
Case 1: 6 33 59
#include<stdio.h> int T,n,a,b,sum[50005<<2]; char s[10]; void pushup(int o) { sum[o]=sum[o<<1]+sum[o<<1|1]; } void build(int o,int l,int r) { int m=(l+r)>>1; if(l == r) scanf("%d",&sum[o]); else { build(o<<1 , l , m); build(o<<1|1 , m+1,r); pushup(o); } } int query(int o,int l,int r) { int m=(r+l)>>1 ,res=0; if(a<=l && r<=b) return sum[o]; else { if(a<=m) res+=query(o<<1 , l ,m); if(b>m) res+=query(o<<1|1 , m+1 ,r); return res; } } void update(int o,int l,int r) { int m=(l+r)>>1; if(l == r) sum[o]+=b; else { if(a<=m) update(o<<1 , l, m); else update(o<<1|1 , m+1 ,r); pushup(o); } } int main() { scanf("%d",&T); for(int i=1;i<=T;i++) { scanf("%d",&n); build(1,1,n); printf("Case %d:\n",i); while(scanf("%s",s) && s[0]!=‘E‘) { scanf("%d%d",&a,&b); if(s[0] == ‘Q‘) { printf("%d\n",query(1,1,n)); continue; } else if(s[0] == ‘S‘) b=-b; update(1,1,n); } } return 0; }
HDU 1166 敌兵布阵(线段树),布布扣,bubuko.com
标签:des style blog class code c
原文地址:http://blog.csdn.net/u013923947/article/details/25886273