HDU-1166 敌兵布阵 简单树状数组

来源:互联网 发布:鞋业销售软件 编辑:程序博客网 时间:2024/05/19 20:40

http://acm.hdu.edu.cn/showproblem.php?pid=1166

线段树解:

            http://blog.csdn.net/u011742541/article/details/13228813

#include "stdio.h"#include "string.h"const int maxn = 50005;int n,c[maxn];int lowbit( int x ){    return x&(-x);}void add( int x,int ad ){    while( x <= n )    {        c[x] += ad;        x += lowbit(x);    }}int sum( int x ){    int ans = 0;    while( x >= 1 )    {        ans += c[x];        x -= lowbit(x);    }    return ans;}int main(){    int t,i,j,cas = 1;    scanf("%d",&t);    while( t-- )    {        int id,ad,x,y;        char str[10];        memset( c,0,sizeof(c) );        scanf("%d",&n);        for( i = 1; i <= n; i ++ )        {            scanf("%d",&ad);            add( i,ad );        }        printf("Case %d:\n",cas++);        int q = 40000;        while( 1 )        {            scanf("%s",str);            if( str[0] == 'A' )            {                scanf("%d%d",&id,&ad);                add( id,ad );            }            else if( str[0] == 'S' )            {                scanf("%d%d",&id,&ad);                add( id,-ad );            }            else if( str[0] == 'Q' )            {                scanf("%d%d",&x,&y);                printf("%d\n", sum(y)-sum(x-1) );            }            else if( str[0] == 'E' )            {                break;            }        }    }    return 0;}


 

原创粉丝点击