敌兵布阵

来源:互联网 发布:怎么开淘宝网店要多少钱 编辑:程序博客网 时间:2024/05/06 12:39


点击打开链接


树状数组的应用。


#include<stdio.h>#include<string.h>int a[50010],c[50010];int cnt = 1;int lowbit(int x){    return x&(-x);}void insert(int k,int d,int maxs){    while(k<=maxs){        c[k] += d;        k+= lowbit(k);    }}int getsum(int k){    int sum = 0;    while(k>0){        sum+=c[k];        k-=lowbit(k);    }    return sum ;}int main(){    int tcase;    int n;    char s[10];    int i;    int x,y;    scanf("%d",&tcase);    while(tcase--){        memset(c,0,sizeof(c));        scanf("%d",&n);        for(i=1;i<=n;i++){            scanf("%d",&a[i]);            insert(i,a[i],n);        }        printf("Case %d:\n",cnt++);        while(scanf("%s",s)!=EOF){            if(strcmp(s,"End")==0) break;            scanf("%d%d",&x,&y);            if(strcmp(s,"Query")==0){                printf("%d\n",getsum(y)-getsum(x-1));            }            else if(strcmp(s,"Add")==0){                insert(x,y,n);            }            else if(strcmp(s,"Sub")==0){                insert(x,-y,n);            }        }    }    return 0;}


0 0