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

    long long sum[maxn*4],lazy[maxn*4];
    long long a[maxn];
    void PushUp(long long rt){sum[rt]=sum[rt<<1]+sum[rt<<1|1];}//重置当前节点(rt)的信息
    void PushDown(long long rt,long long ln,long long rn){
    if(lazy[rt]){
    lazy[rt<<1]+=lazy[rt];sum[rt<<1]+=lazy[rt]*ln;

    lazy[rt<<1|1]+=lazy[rt];sum[rt<<1|1]+=lazy[rt]*rn;
    lazy[rt]=0;
    }
    }
    void Build(long long l,long long r, long long rt){
    if(l==r){sum[rt]=a[l];return;}
    long long m=(l+r)>>1;
    Build(l,m,rt<<1);
    Build(m+1,r,rt<<1|1);
    PushUp(rt);
    }
    void Update(long long L,long long R,long long C,long long l,long long r,long long rt){
    if(L<=l&&r<=R){
    sum[rt]+=C*(r-l+1);
    lazy[rt]+=C;
    return;
    }
    long long m=(l+r)>>1;
    PushDown(rt,m-l+1,r-m);
    if(L <= m)Update(L,R,C,l,m,rt<<1);
    if(R > m)Update(L,R,C,m+1,r,rt<<1|1);
    PushUp(rt);
    }
    long long Query(long long L,long long R,long long l,long long r,long long rt){
    if(L<=l&&r<=R){
    return sum[rt];
    }
    long long m=(l+r)>>1;
    PushDown(rt,m-l+1,r-m);
    long long ANS=0;
    if(L <= m)ANS+=Query(L,R,l,m,rt<<1);
    if(R > m )ANS+=Query(L,R,m+1,r,rt<<1|1);
    return ANS;
    }
  • 相关阅读:
    C#中调用Outlook API 发起会议
    Log4Net配置
    web端调用Webapi获取Excel表格
    表格导出之Aspose.Cells
    验证输入框
    把新建的对象所有属性变成默认值
    省市区三级联动
    全局异常处理
    HttpHttpServletRequest / Reponse
    热部署
  • 原文地址:https://www.cnblogs.com/yesuweiYYYY/p/13808737.html
Copyright © 2011-2022 走看看