这几天主要看了一下课件里的例题并刷了几道线段树练习题,上次主要看的是单点更新的,这次主要看了一下区间更新的,区间更新跟单点更新的不同之处在于另定义一个数组用于储存修改操作,其分区间也应被修改,但是修改储存在了数组中,可以暂时不用修改;而对于当前区间比需要的目标区间大的时候,则需要往下进行修改了。
其基本模版如下:
void update(int num,int le,int ri,int x,int y)
{
if(x<=le&&y>=ri)
{
tre[num]++;
laz[num]++;
return ;
}
pushdown(num);
int mid=(le+ri)/2;
if(x<=mid)
update(num*2,le,mid,x,y);
&n
博主近期专注于线段树的学习,尤其是区间更新部分。区间更新不同于单点更新,需要维护一个额外的数组记录修改,并在适当时候下传。文中介绍了区间更新的基本模板和pushdown操作,以及查找操作的实现。目前博主对线段树原理有初步理解,但实战应用还需加强。
订阅专栏 解锁全文
987

被折叠的 条评论
为什么被折叠?



