线段树单点修改模板

转载 2018年04月15日 21:14:00
#include <iostream>
using namespace std;
const int MAX_N = 10010;
int s[4*MAX_N];

void up(int p){
    s[p]=s[p*2]+s[p*2+1];
}

void modify(int p,int l,int r,int x,int v){
    if(l==r){
        s[p]+=v;
        return;
    }
    int mid=(l+r)/2;
    if(x<=mid){
        modify(p*2,l,mid,x,v);
    }else{
        modify(p*2+1,mid+1,r,x,v);
    }
    up(p);
}

int query(int p,int l,int r,int x,int y){
    if(x<=l&&r<=y){
        return s[p];
    }
    int mid=(l+r)/2,res=0;
    if(x<=mid){
        res+=query(p*2,l,mid,x,y);
    }
    if(y>mid){
        res+=query(p*2+1,mid+1,r,x,y);
    }
    return res;
}

int main() {
    int n;
    cin>>n;
    for(int i=1;i<=n;++i){
        int d;
        cin>>d;
        modify(1,1,n,i,d);
    }
    int q;
    cin>>q;
    while(q--){
        int d,x,y;
        cin>>d>>x>>y;
        if(d==0){
            modify(1,1,n,x,y);
        }else{
            cout<<query(1,1,n,x,y)<<endl;
        }
    }
    return 0;
}

【模板】线段树单点修改

基本介绍 模板题目 代码实现 基本介绍在求区间最值的基础上加了一个单点修改 也就是下面代码中的update函数 主要通过不断二分区间往下找左右子区间 直到一个子区间只包括一个节点 直接改变这个节点的值...
  • qq_36303472
  • qq_36303472
  • 2017年09月14日 14:55
  • 102

线段树模板合集--单点替换,区间替换,区间增加3种情况

单点替换,单点增加,区间求最值,区间求和#include #include #include using namespace std; #define lson l , m , rt ...
  • qq547276542
  • qq547276542
  • 2016年05月30日 11:46
  • 3318

敌兵布阵 简单的线段树单点修改 + 单点查询

A - 敌兵布阵   简单的线段树单点查询, 单点修改 AC代码: #include #include #include #include #include #include ...
  • Haskei
  • Haskei
  • 2016年12月06日 22:03
  • 400

线段树系列-hdu-1754-I Hate It-单点修改求区间最值

简单的单点修改,求区间最值 #include #define max_N 800000 using namespace std; int ans; //求和 int big; ...
  • lyc1635566ty
  • lyc1635566ty
  • 2015年12月16日 23:00
  • 791

[模板] - 线段树 - Lazy标记 - 单点/区间更新 - 模板

线段树 - Lazy标记 - 单点/区间更新 - 模板目录: 前言 在这篇文章的代码中用到的宏定义 Lazy标记 区间更新 单点更新 模板 例题 1. 前言:  线段树我花了整整两天的时间去啃,进度很...
  • xs18952904
  • xs18952904
  • 2017年05月26日 09:38
  • 246

线段树区间最大值查询,单点更新,建立模板

一颗线段树的建立:const int MAXNODE = 1
  • Nemaleswang
  • Nemaleswang
  • 2017年03月23日 20:32
  • 296

线段树大模板(区间更新,单点更新,查询区间最值等等)

#include #define MAXN 100010 #define inf 0x3f3f3f3fusing namespace std;struct node{ int l,r;//区间...
  • Nemaleswang
  • Nemaleswang
  • 2017年05月30日 17:18
  • 356

hihoCoder 1077 RMQ问题再临-线段树 单点修改,求区间最小值

1077 : RMQ问题再临-线段树 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 上回说到:小Hi给小Ho出了这样一...
  • u012605629
  • u012605629
  • 2015年05月14日 20:58
  • 467

HDU 4302(zkw线段树-单点修改区间最值)

Holedox Eating Problem Description Holedox在一条长度为L的线上. Holedox能在线上移动,线上会时不时的出现蛋糕(保证是整点)。Holedox...
  • nike0good
  • nike0good
  • 2012年11月19日 14:33
  • 1469

【数据结构】【线段树】单点修改区间查询

【数据结构】【线段树】单点修改区间查询
  • Henry_2001
  • Henry_2001
  • 2016年08月17日 09:18
  • 226
收藏助手
不良信息举报
您举报文章:线段树单点修改模板
举报原因:
原因补充:

(最多只允许输入30个字)