1 条题解
-
0
自动搬运
来自洛谷,原作者为

Petit_Souris
鼓励的话语 无论多少次我都会说给你听 | 你在名为弱小的深渊 究竟看见过什么 | 天空中出现了一种罕见的天文现象搬运于
2025-08-24 22:39:54,当前版本为作者最后更新于2024-10-06 19:24:35,作者可能在搬运后再次修改,您可在原文处查看最新版自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多
以下是正文
放在 NOIP 模拟赛 T3 简直是再合适不过了。什么心态。整体思路肯定是从左到右扫描右端点,维护对应的左端点是否合法,那么查询 内合法的子区间数量就是查询区间的历史和。
分析一下这个海胆除了可以食用以外的性质:
首先我们需要让整个图只包含一个简单环,我们找到最靠左的 ,满足 只有一个环,那么一个必要条件就是 。
其次需要满足整个图是联通的。由于恰好只有一个环,所以这等价于 。在这条加强限制之下, 已经变得充分,因为对于没有环的图都有 。
考虑这件事情如何维护,显然可以双指针。动态连通性的问题想到用 LCT 维护,由于现在只有至多一个简单环了,所以我们并不需要把边拆点,维护路径最小值,不妨转而维护多出来那条边的编号,记为 , 表示没有环。如果目前断开了 这条边:
-
若 ,直接将 设为 ;
-
否则,若断开 后, 不连通,则连接 ,并将 设为 。
这是 LCT 板子。
最后还要满足非环点度数 ,这也是具有单调性的。这可以通过维护路径上的 的点数来解决。判断是否合法时就查询连接环边两端的路径上的 的点数是否等于全局 的点数即可。LCT 同样支持维护可合并的路径信息,查询的时候 split 出 这条路径,这时候这条路径对应的信息就是 LCT 上 子树对应的信息了。
以上就完成了维护 的过程。
接下来解决 的限制。由于 限制到的部分都满足 ,所以可以直接维护 , 的部分是合法的。那么加入边 的时候,要把 上一次出现的位置往后到 的这段区间点数 , 同理,再对 的边数 。现在问题转化为区间加减,给一个区间打上历史最小值 的 tag(保证最小值 ),查询区间历史和。可以直接用线段树维护。
时间复杂度 。
代码可以私信我要。
-
- 1
信息
- ID
- 8040
- 时间
- 9000ms
- 内存
- 512MiB
- 难度
- 7
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者