—————————————————————————————————————————————————— —————————————————————前排护眼——————————————————————— ——————————————————————————————————————————————————
typedef long long ll;
ll n,m;
ll value[1000002];
ll data[200002];
//建树
void build(int o,int l,int r){
if(l==r){
value[o]=value[l];
return ;
}
ll mid=(l+r)/2;
build(o*2,l,m);
build(o*2+1,m+1,r);
value[o]=max(value[o*2],value[o*2+1]);
}
//单点更新,将x的value改为d
void update(int o,int l,int r,int x,int d){
if(l==r){
value[o]=d;
return ;
}
int m=(l+r)/2;
if(x<=m)update(o*2,l,m,x,d);
if(m+1<=x)update(o*2+1,m+1,r,x,d);
value[o]=max(value[o*2],value[o*2+1]);
}
//查询区间[ql,qr]的最大值
int query(int o,int l,int r,int ql,int qr){
if(ql<=l&&r<=qr)return value[o];
int m=(l+r)/2;
int ans=0;
if(ql<=m){
ans=max(ans,query(o*2,l,m,ql,qr));
}
if(qr>=m+1){
ans=max(ans,query(o*2+1,m+1,r,ql,qr));
}
return ans;
}
原文:https://www.cnblogs.com/xiaozezz/p/11688264.html