如果有一个操作是将 [l,r] 修改为 x 而不是加上 x 应该如何实现?我的代码好像不太对。
void pushdown(int p, int l, int r, int k) {
tag[p * 2] = 0;
tag[p * 2 + 1] = 0;
t[p * 2] = k;
t[p * 2 + 1] = k;
tag[p] = 0;
}
void modify(int p, int x, int y, int l, int r, int k) {
if(x <= l && r <= y) {
t[p] = k;
tag[p] = 0;
} else {
pushdown(p, l, r, k);
int mid = (l + r) / 2;
if(x <= mid) modify(p * 2, x, y, l, mid, k);
if(y > mid) modify(p * 2 + 1, x, y, mid + 1, r, k);
t[p] = max(t[p * 2], t[p * 2 + 1]);
}
}