hdu 1166 敌兵布阵(简单线段树or树状数组)

题意:

N个工兵营地,第i个营地有ai个人。

三种操作:

1.第i个营地增加x个人。

2.第i个营地减少x个人。

3.查询第i个到第j个营地的总人数。

思路:

线段树or树状数组

代码:(树状数组)

int n;
int a[50005];
int C[50005];

void init(){
    rep(i,1,n){
        C[i]=0;
        for(int j=i-lowbit(i)+1;j<=i;j++){
                C[i]+=a[j];
        }
    }
}
void add(int x,int y){
    for(int i=x;i<=n;i+=lowbit(i)){
        C[i]+=y;
    }
}

int calc(int x){
    if(x==0) return 0;
    int ans=0;
    for(int i=x;i>0;i-=lowbit(i))
        ans+=C[i];
    return ans;
}
int query(int x,int y){
    return calc(y)-calc(x-1);
}

int main(){

    int T;
    cin>>T;
    rep(t,1,T){
        scanf("%d",&n);
        rep(i,1,n){
            scanf("%d",&a[i]);
        }

        init();

        printf("Case %d:\n",t);

        char ope[10];
        while(1){
            scanf("%s",ope);
            if(ope[0]==‘E‘) break;
            int x,y;
            if(ope[0]==‘A‘){
                scanf("%d%d",&x,&y);
                add(x,y);
            }
            else if(ope[0]==‘S‘){
                scanf("%d%d",&x,&y);
                add(x,-y);
            }
            else{
                scanf("%d%d",&x,&y);
                int ans=query(x,y);
                printf("%d\n",ans);
            }
        }
    }

    return 0;
}
时间: 2024-11-18 05:40:04

hdu 1166 敌兵布阵(简单线段树or树状数组)的相关文章

HDU 1166 敌兵布阵(线段树)

Problem Description C国的死对头A国这段时间正在进行军事演习,所以C国间谍头子Derek和他手下Tidy又开始忙乎了.A国在海岸线沿直线布置了N个工兵营地,Derek和Tidy的任务就是要监视这些工兵营地的活动情况.由于采取了某种先进的监测手段,所以每个工兵营地的人数C国都掌握的一清二楚,每个工兵营地的人数都有可能发生变动,可能增加或减少若干人手,但这些都逃不过C国的监视. 中央情报局要研究敌人究竟演习什么战术,所以Tidy要随时向Derek汇报某一段连续的工兵营地一共有多少

HDU 1166 敌兵布阵 (线段树 单点更新)

题目链接 线段树掌握的很差,打算从头从最简单的开始刷一波, 嗯..就从这个题开始吧! 1 #include <iostream> 2 #include <cstdio> 3 #include <cstring> 4 #include <queue> 5 #include <cstdlib> 6 #include <algorithm> 7 const int maxn = 50000+10; 8 using namespace std

hdu 1166 敌兵布阵(线段树之 单点更新+区间求和)

敌兵布阵                                                                             Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Problem Description C国的死对头A国这段时间正在进行军事演习,所以C国间谍头子Derek和他手下Tidy又开始忙乎了.A国在海岸线沿直线布置了N个工兵

HDU 1166 敌兵布阵 (线段树 &amp; 树状数组)

敌兵布阵 Time Limit:1000MS    Memory Limit:32768KB    64bit IO Format:%I64d & %I64u SubmitStatus 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1166 Description C国的死对头A国这段时间正在进行军事演习,所以C国间谍头子Derek和他手下Tidy又开始忙乎了.A国在海岸线沿直线布置了N个工兵营地,Derek和Tidy的任务就是要监视这些工兵营地的

HDU 1166 敌兵布阵(线段树的初步应用2)

HDU  1166  敌兵布阵 Description C国的死对头A国这段时间正在进行军事演习,所以C国间谍头子Derek和他手下Tidy又开始忙乎了.A国在海岸线沿直线布置了N个工兵营地,Derek和Tidy的任务就是要监视这些工兵营地的活动情况.由于采取了某种先进的监测手段,所以每个工兵营地的人数C国都掌握的一清二楚,每个工兵营地的人数都有可能发生变动,可能增加或减少若干人手,但这些都逃不过C国的监视. 中央情报局要研究敌人究竟演习什么战术,所以Tidy要随时向Derek汇报某一段连续的工

hdu 1166敌兵布阵(线段树)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1166 敌兵布阵 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 52476    Accepted Submission(s): 21985 Problem Description C国的死对头A国这段时间正在进行军事演习,所以C国间谍头子D

hdu 1166 敌兵布阵 (线段树单点更新)

敌兵布阵                                                         Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)                                                                             Total Submission(s): 59474   

HDU 1166——敌兵布阵——————【线段树单点增减、区间求和】

敌兵布阵 Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Submit Status Practice HDU 1166 Description C国的死对头A国这段时间正在进行军事演习,所以C国间谍头子Derek和他手下Tidy又开始忙乎了.A国在海岸线沿直线布置了N个工兵营地,Derek和Tidy的任务就是要监视这些工兵营地的活动情况.由于采取了某种先进的监测手段,所以每个工兵营地的人数

HDU 1166 敌兵布阵 【线段树-点修改--计算区间和】

敌兵布阵 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 59891    Accepted Submission(s): 25331 Problem Description C国的死对头A国这段时间正在进行军事演习,所以C国间谍头子Derek和他手下Tidy又开始忙乎了.A国在海岸线沿直线布置了N个工兵营 地,Derek和Tidy的任务

hdu 1166 敌兵布阵【线段树】(求给定区间和)

题目链接:https://vjudge.net/contest/182746#problem/B       敌兵布阵 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)                                                                     Total Submission(s): 117431    Accepte