专栏文章
题解:P9067 [Ynoi Easy Round 2022] 虚空处刑 TEST_105
P9067题解参与者 2已保存评论 1
文章操作
快速查看文章及其快照的属性,并进行相关操作。
- 当前评论
- 1 条
- 当前快照
- 1 份
- 快照标识符
- @mioub5rm
- 此快照首次捕获于
- 2025/12/03 01:16 3 个月前
- 此快照最后确认于
- 2025/12/03 01:16 3 个月前
题意
给定一颗 个点的树,点有点权 。
定义结点 的「同权连通分量」表示一个连通分量,其中每个点的点权均相等。
共有 次操作:
- 将结点 的点权修改为 。
- 查询结点 所在的「同权连通分量」的大小。
记 ,则 。
解法
「同权连通分量」显然不好直接维护,考虑 dsu on tree。
注意到集合大小不减,那么可以直接合并集合。那么就可以用并查集维护每个连通分量的根结点,那么更新信息只需要处理一个点。
定点 为根结点,然后记 表示 所在的「同权连通分量」下面直接相连的颜色为 的结点集合。
同时维护一下每个连通分量的大小,这样子对于查询操作可以 输出。
然后对于修改操作,具体如下:
- 先找到对应连通分量根结点;
- 再在 中启发式合并颜色相同的结点;
- 若当前连通分量根结点的父亲颜色相同,那么也同时合并。
时间复杂度
可以发现时间复杂度的瓶颈就是合并每个集合,如果使用线性数据结构维护集合,那么单个元素的操作次数是 的。
将所有合并的情况建成一颗树,那么一个结点需要合并到另外一个集合中当且仅当经过了一条轻边。而经过轻边后集合大小至少会翻倍(重儿子大小大于轻儿子),所以至多会经过 条轻边。
故时间复杂度 ,预期得分 。
相关推荐
评论
共 1 条评论,欢迎与作者交流。
正在加载评论...