近视候任Splay

P3372 【模板】线段树 1

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);
}

|