zoukankan      html  css  js  c++  java
  • 线段树 无lazy

      记得写过线段树含lazy,这个就是小儿科了,就只奉上代码啦~ ^0^

    #include<cstdio>
    using namespace std;
    #define ll long long
    const int maxn=5e5+5;
    int l[4*maxn],r[4*maxn];
    ll sum[4*maxn];
    void build(int L,int R,int now)
    {
        l[now]=L;
        r[now]=R;
        if(L==R)
        {
            scanf("%lld",&sum[now]);
            return ;
        }
        int mid=(L+R)/2;
        build(L,mid,now*2);
        build(mid+1,R,now*2+1);
        sum[now]=sum[now*2]+sum[now*2+1];
    }
    ll query(int L,int R,int now)
    {
        if(L==l[now]&&R==r[now])
            return sum[now];
        int mid=(l[now]+r[now])/2;
        if(R<=mid)
            return query(L,R,now*2);
        else if(L>mid)
            return query(L,R,now*2+1);
        else
            return query(L,mid,now*2)+query(mid+1,R,now*2+1);
    }
    void update(int idx,int d,int now)
    {
        if(l[now]==r[now])
        {
            sum[now]+=d;
            return ;
        }
        int mid=(l[now]+r[now])/2;
        if(idx<=mid)
            update(idx,d,now*2);
        else
            update(idx,d,now*2+1);
        sum[now]=sum[now*2]+sum[now*2+1];
    }
    int main()
    {
        int n,q;
        scanf("%d%d",&n,&q);
        build(1,n,1);
        while(q--)
        {
            int op,a,b;
            scanf("%d%d%d",&op,&a,&b);
            if(op==1)
                update(a,b,1);
            else
                printf("%lld
    ",query(a,b,1));
        }
        return 0;
    }
  • 相关阅读:
    mac 安装Windows系统
    各种镜像源
    应用官方下载地址汇总
    centos7 升级openssh
    ubuntu16.04升级openssh
    腾讯云
    msdeploy 远程发布到lls
    Java Script 什么是闭包?
    JavaScript我的怀疑
    HTML 之 js是干什么的
  • 原文地址:https://www.cnblogs.com/popo-black-cat/p/10022366.html
Copyright © 2011-2022 走看看