#include<bits/stdc++.h>
using namespace std;
const int M=1e5+5;
int n,a[M];
struct SegmentTree{
int l,r;//左右端点
int sum;//区间和
int lazy;//增量延迟标记
}tree[M*4];
//建树
void build(int p,int l,int r){
//区间编号,区间左端点,区间右端点
tree[p].l=l;tree[p].r=r;//标识区间左右端点
if(l==r){
tree[p].sum=a[l];return;}
int mid=(l+r)/2;
build(p*2,l,mid);//递归左半
build(p*2+1,mid+1,r);//递归右半
//回溯时更新区间附加信息
tree[p].sum=tree[p*2].sum+tree[p*2+1].sum;//pushup
}
void print(
线段树(详细注释—pushdown写法)
最新推荐文章于 2023-03-29 09:24:21 发布