首页 > 其他分享 >可持久化线段树标记永久化?可刺激化修道士表舅已经黑!

可持久化线段树标记永久化?可刺激化修道士表舅已经黑!

时间:2023-08-25 15:11:39浏览次数:29  
标签:修道士 int 永久化 tag ans 区间 表舅

关于可刺激化修道士表舅已经黑。

因为傻逼 lxd 告诉我我的表舅已经黑写法是错误的,所以稀里糊涂的让他改成了他的那种写法。但是我的也是对的。

比如区间加和区间查和,维护一个 \(tag\),表示表舅的值。然后在区间加的时候,经过的区间的 \(sum\) 的值可以直接加,但是只有在

if (x <= l && r <= y) {
	tag[root] += d;
	return root;
}

的时候才加上 \(tag\)。询问的时候加上沿途的表舅,最后统计加上就好了。NB 区间长度,取 \(\max\) 和 \(\min\)(见下面代码)。

int ask(int l, int r, int p, int x, int y, int add) {  // x y -> segment tree
	int len = min(r, y) - max(l, x) + 1; // look here
	if (x <= l && r <= y) return sum[p] + len * add; // 加上贡献
	int mid = l + r >> 1, ans = 0;
	if (x <= mid) ans += ask(l, mid, son[p][0], x, y, add + tag[p]); // 统计贡献
	if (y > mid) ans += ask(mid + 1, r, son[p][1], x, y, add + tag[p]); // 统计贡献
	return ans;
} 

总之就是这样维护就可以了。应该是对自己有起到一个提升的作用。

标签:修道士,int,永久化,tag,ans,区间,表舅
From: https://www.cnblogs.com/liuzimingc/p/black-black.html

相关文章

  • 标记永久化
    标记永久化:要求修改必须顺序无关满足区间贡献独立多标记好像也不适用如果对于指定区间的修改可以在与当前区间仅仅是相交而不是包含的情况下可以直接完成,就不需要pushup......
  • 实现客户端上传文件,服务器接收并永久化存储
    publicclassClientDemo{publicstaticvoidmain(String[]args)throwsIOException{//客户端将本地文件上传到服务器,并接收服务器的反馈......