其他分享
首页 > 其他分享> > 题解 CF1641C - Anonymity Is Important

题解 CF1641C - Anonymity Is Important

作者:互联网

CF1641C - Anonymity Is Important

非常抽象,建议自己把数据放代码上跑,理解过程。

并查集的另类用法。

我们设 \(fa_i\) 去维护包含 \(i\) 的全健康区间。具体来说,对于一个区间 \([l,r]\),我们将 \(fa_{l\sim r}\) 全部都接在 \(fa_{r+1}\) 上。这样会有两个用处:

我们再设置一个数组 \(L_i\) 代表 \(i\) 左边 至少一病区间 的左端点在哪里。如果有多个取离 \(i\) 最近的。

那么对于询问一个点 \(x\),我们就看:

怎么修改?

如果是加入一个健康区间,那么就是不断地将 \(l\sim r\) 变成 \(r+1\) 的子孙。(实际操作中,如果枚举到 \(i\) 的时候,发现 \(i\) 已经是 \(r+1\) 的子孙,那么就可以直接结束了,保证时间复杂度。)

如果是加入一个至少一病区间,那么就更新一下 \(L_i\) 即可。

标签:那么,一病,题解,fa,Important,端点,区间,Anonymity,健康
来源: https://www.cnblogs.com/BlankAo/p/15934441.html