关于线段树Q4
  • 板块学术版
  • 楼主ivnilkkk
  • 当前回复18
  • 已保存回复19
  • 发布时间2024/2/23 17:37
  • 上次更新2024/2/23 20:26:58
查看原帖
关于线段树Q4
1073341
ivnilkkk楼主2024/2/23 17:37

如果有一个操作是将 [l,r][l,r] 修改为 xx 而不是加上 xx 应该如何实现?我的代码好像不太对。

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]);
	}
}
2024/2/23 17:37
加载中...