Time
Limit: 2000/1000 MS (Java/Others) Memory Limit:
65536/32768 K (Java/Others)
Total Submission(s):
36506 Accepted Submission(s):
15432
1 #include<stdio.h> 2 #include<string.h> 3 #include<stdlib.h> 4 #define maxn 50000 5 int bb[maxn+5],val; 6 int nn; 7 int lowbit(int k) 8 { 9 // return k&(k|(k-1)); 10 // return k&!k-1); 11 return k&(-k); 12 } 13 void ope(int x,int aa) //DT?? 14 { 15 while(x<=nn) 16 { 17 bb[x]+=aa; 18 x+=lowbit(x); 19 } 20 } 21 int sum(int x) //í3?? 22 { 23 int ans=0; 24 while(x>0) 25 { 26 ans+=bb[x]; 27 x-=lowbit(x); 28 } 29 return ans; 30 } 31 int main() 32 { 33 // freopen("test.in","r",stdin); 34 // freopen("test.out","w",stdout); 35 int test,i,left,right,cnt; 36 char str[7]; 37 scanf("%d",&test); 38 for( cnt=1 ; cnt<=test ; cnt++ ) 39 { 40 scanf("%d",&nn); 41 memset(bb,0,sizeof(bb)); 42 for(i=1;i<=nn;i++) 43 { 44 scanf("%d",&val); 45 ope(i,val); 46 } 47 printf("Case %d:\n",cnt); 48 while(1) 49 { 50 scanf("%s",str); 51 if(str[0]==‘E‘) break; 52 scanf("%d%d",&left,&right); 53 if(str[0]==‘Q‘) 54 printf("%d\n",sum(right)-sum(left-1)); 55 else if(str[0]==‘A‘) 56 ope(left,right); 57 else 58 if(str[0]==‘S‘) 59 ope(left,-1*right); 60 } 61 } 62 return 0; 63 }
HDUOJ-----1166敌兵布阵,布布扣,bubuko.com
原文:http://www.cnblogs.com/gongxijun/p/3650007.html