STLvector @ 2024-09-23 23:01:26
如果你懒得判空节点,那么在修改完之后要一路修改到根!
否则在你修完下面的子树之后再一查根节点就寄了。
一定要保证值被更新过的节点上面的所有节点都被更新过。
附上 modify
:
void modify(int l,int r,long long k)
{
if(l!=1&&r!=tail)
{
int L=find(l-1),R=find(r+1);
Splay(L);
Splay(R,L);
execute(s[s[root][1]][0],k);
pushup(s[root][1]);
pushup(root);
}
else if(l!=1)
{
int L=find(l-1);
Splay(L);
execute(s[root][1],k);
pushup(root);
}
else if(r!=tail)
{
int R=find(r+1);
Splay(R);
execute(s[root][0],k);
pushup(root);
}
else execute(root,k);
}