线段树单点修改

//单点修改 区间求和
#define Max 41234
int ans;int data[Max],sum[4*Max];
void creat(int l,int r,int root)
{
if(l==系统运维面试题及答案r)
{
sum[root]=data[l];//更新叶子节点
return ;
}
int mid=(l+r)/2;
creat(l,mid,root*系统运维包括哪些内容2);
creat(mid+1,r,root*2+1);
sum[root]=sum[root*2]+sum[root*2+1];//更新父亲节点
}
void update(int L,int c,int l,int r系统/运维,int root)
{
if(l==r)
{
sum[root]+=c;
return ;
}
int mid=(l+r)/2;区间求和
if(L<windows10激活密钥;=mid)
update(L,c,l,mid,root*2);子节点
elselinux除文件命令
uwindows无法连接到打印机pdate(L,c,mid+1,r,root*2windows11有必要升级吗+1);
sum[root]=sum[root*2]+sumwindows10激活密钥[root*2+1];
}
void Query(int L,int R,int l,int子节点 r,int root系统/运维)
{
if(L<=l&&R>=r)
{
ans+=sum[root];
return;
}
int mid=(l+r)/2;
if(L<=Mid)
Query(L叶子节点,R,l,r,root*2);
if(R>mid)
Query(L,R,l,r,root*2+1);
}

//单点修改 区间找最值
void creat(int l,int r,int root)
{
if(l==r)
{
sum[root]=data[i];
retuwindows是什么意思rn ;
}
int mid=(l+r)/2;
creat(l,mlinux必学的60个命令id,root*2);
creat(mid+1,r,root*2+1);
sum[root]=max(sum[root*2],sum[root*2+1])//最小也一样
}
void update(int L,int c,int l,int r,int root)
{
if(l==r)
{
sum[root]=c;
return;
}
int mid=(l+r)/2;
if(L<=mid)
update(系统运维工程师面试问题及答案L,c,l,mid,root*2);
else
update(L,c,mid+1,r,root*2+1);
sum[root]=max(sum[root],sum[root*2+1]);
}
void Query(int L,int R,int l,int r,int root)
{
if(L<=l&&R>=r)
{
a系统/运维ns=max(ans,sulinux系统安装m[root]);
}
int mid=(l+r)/2;
if(L<=mid)
Query(L,R,l,mid,root*2);
if(R>mid)windows10
Query(L,R,mid+1,r,root*2+1);
}