有2种方式,都是用的lazy标记,但具体用法不同
1.区间加值 2.求区间和
https://www.luogu.com.cn/record/89949709
3.求区间最大值
https://www.luogu.com.cn/record/100443383
struct Tree{
int v;
int l,r;
}tr[N<<2];
int qry(int k,int x,int y){
int t=inf;
if(x<=tr[k].l&&y>=tr[k].r)
return tr[k].v;
int md=(tr[k].l+tr[k].r)/2;
if(x<=md) t=min(t,qry(k1,x,y));
if(y>md) t=min(t,qry(k2,x,y));
return t;
}
void build(int k,int l,int r){
tr[k].l=l,tr[k].r=r;
tr[k].v=inf;
if(l==r){
tr[k].v=val[id[l]]; return;
}
int md=(l+r)/2;
build(k1,l,md),build(k2,md+1,r);
tr[k].v=min(tr[k1].v,tr[k2].v);
}
浙公网安备 33010602011771号