博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
hdu-1166敌兵布阵(树状数组)
阅读量:4286 次
发布时间:2019-05-27

本文共 1010 字,大约阅读时间需要 3 分钟。

此处的树状数组讲解请点击:

#include
#include
int n,a[50005],q[40005];int lowbit(int x){ return x&(-x);}int Getsum(int pos){ int res = 0; while(pos > 0) { res += a[pos]; pos -= lowbit(pos); } return res;}void add(int pos,int num){ while(pos <= n) { a[pos] += num; pos += lowbit(pos); }}int main(){ int t,x,y,p=1; char s[20]; scanf("%d",&t); while(t--) { scanf("%d",&n); memset(a,0,sizeof(a)); for(int i = 1;i <= n;i++) { scanf("%d",&x); add(i,x); } int num = 0; while(scanf("%s",s),strcmp(s,"End")!=0) { scanf("%d%d",&x,&y); if(strcmp(s,"Query")==0) q[num++] = Getsum(y) - Getsum(x-1); else if(strcmp(s,"Add")==0) add(x,y); else add(x,-y); } printf("Case %d:\n",p++); for(int i = 0;i < num;i++) { printf("%d\n",q[i]); } }}

转载地址:http://pysgi.baihongyu.com/

你可能感兴趣的文章