• A


    思路:线段树单点修改+区间查询。
    #include<cstdio>
    #include<cstring>
    #include<iostream>
    #include<algorithm>
    #define MAXN 50001
    using namespace std;
    string s;
    int t,n,tot;
    struct nond{
        int l,r,sum;
    }tree[MAXN*4];
    void up(int now){
        tree[now].sum=tree[now*2].sum+tree[now*2+1].sum;
    }
    void build(int now,int l,int r){
        tree[now].l=l;tree[now].r=r;
        if(tree[now].l==tree[now].r){
            scanf("%d",&tree[now].sum);
            return ;
        }
        int mid=(tree[now].l+tree[now].r)/2;
        build(now*2,l,mid);
        build(now*2+1,mid+1,r);
        up(now);
    }
    void change(int now,int x,int k){
        if(tree[now].l==tree[now].r){
            tree[now].sum+=k;
            return ;
        }
        int mid=(tree[now].l+tree[now].r)/2;
        if(x<=mid)    change(now*2,x,k);
        else change(now*2+1,x,k);
        up(now);
    }
    int query(int now,int l,int r){
        if(tree[now].l==l&&tree[now].r==r)
            return tree[now].sum;
        int mid=(tree[now].l+tree[now].r)/2;
        if(r<=mid)    return query(now*2,l,r);
        else if(l>mid)    return query(now*2+1,l,r);
        else    return query(now*2,l,mid)+query(now*2+1,mid+1,r);
    }
    int main(){
        scanf("%d",&t);
        while(t--){
            tot++;printf("Case %d:
    ",tot);
            scanf("%d",&n);
            build(1,1,n);
            int x,y;
            while(cin>>s&&s[0]!='E'){
                if(s[0]=='Q'){ scanf("%d%d",&x,&y);printf("%d
    ",query(1,x,y)); }
                else if(s[0]=='A'){ scanf("%d%d",&x,&y);change(1,x,y); }
                else if(s[0]=='S'){ scanf("%d%d",&x,&y);change(1,x,-y); }
            }
        }
    }
    细雨斜风作晓寒。淡烟疏柳媚晴滩。入淮清洛渐漫漫。 雪沫乳花浮午盏,蓼茸蒿笋试春盘。人间有味是清欢。
  • 相关阅读:
    harass
    matlab的legend()用法
    migrate
    大千敦煌面壁
    三维插值(MATLAB)——TriScatteredInterp/scatteredInterpolant函数
    有哪些不出名的诗人写的千古名句?
    听吴翰清讲课笔记
    移动着,心就变了
    人活着为了什么?
    人生就是一场修炼
  • 原文地址:https://www.cnblogs.com/cangT-Tlan/p/8463991.html
Copyright © 2020-2023  润新知