对于区间修改需要用到pushdown操作,可以用一个懒标记标记根节点,表示根节点以下全部加上这个值。
void pushdown(root)
{
left.add += root.add;
left.sum += root.add * (left.r - left.l + 1);
right.add += right.add;
right.sum += right.add * (right.r - right.l + 1);
root.add = 0;
}
应在修改之前pushdown一遍,防止出现同一区间内add不同的情况