zoukankan      html  css  js  c++  java
  • 单点修改区间求和线段树模板

    
    #include <stdio.h>
    #include <cstring>
    #include <cstdlib>
    #include <cmath>
    #include <iostream>
    #include <algorithm>
    #define maxn 500010
    
    using namespace std;
    
    struct point
    {
        int l,r,val;
    }tr[maxn*4];
    
    int m,n;
    int a[maxn];
    
    void buildtree(int x,int l,int r)
    {
        tr[x].l=l;
        tr[x].r=r;
        if(l==r)
        {
            tr[x].val=a[l];
            return;
        }
        int lch=x*2,rch=x*2+1;
        int mid=(l+r)/2;
        buildtree(lch, l, mid);
        buildtree(rch, mid+1, r);
        tr[x].val=tr[x*2].val+tr[x*2+1].val;
    }
    
    void modify(int x,int pos,int val)
    {
        if(tr[x].l==tr[x].r)
        {
            tr[x].val+=val;
            return;
        }
        int mid=(tr[x].l+tr[x].r)/2;
        if(pos<=mid)
            modify(x*2, pos, val);
        else
            modify(x*2+1, pos, val);
        tr[x].val=tr[x*2].val+tr[x*2+1].val;
    }
    
    int query(int x,int l,int r)
    {
        if(l<=tr[x].l && tr[x].r<=r)
            return tr[x].val;
        int mid=(tr[x].l+tr[x].r)/2;
        int ans=0;
        if(l<=mid)
            ans+=query(x*2, l, r);
        if(r>mid)
            ans+=query(x*2+1, l, r);
        return ans;
    }
    
    int main()
    {
        scanf("%d%d",&n,&m);
        for(int i=1;i<=n;i++)
            scanf("%d",&a[i]);
        buildtree(1, 1, n);
        for(int i=1;i<=m;i++)
        {
            int op;
            scanf("%d",&op);
            if(op==1)
            {
                int x,k;
                scanf("%d%d",&x,&k);
                modify(1, x, k);
            }
            else
            {
                int x,y;
                scanf("%d%d",&x,&y);
                printf("%d
    ",query(1, x, y));
            }
        }
    }
    
  • 相关阅读:
    wpf 命令
    wpf 事件
    wpf 依赖属性介绍
    wpf binging (六)多绑定
    ISI的晶圆级MRAM测试仪
    常见存储器分类
    存储器SDRAM简要历史
    当前MRAM市场以及专用MRAM设备测试的重要性
    IPUS SQPI PSRAM为STM32单片机提供RAM扩展方案
    单端口SRAM与双端口SRAM电路结构
  • 原文地址:https://www.cnblogs.com/ShineEternal/p/10834219.html
Copyright © 2011-2022 走看看