关于lct维护动态生成树问题

水管局长数据加强版

题意是要求维护一棵最小生成树,支持删边操作。

删边操作比较难处理,因为如果删掉树上的边,

很难从已经有备选集合中找出连接不同联通块的最小的边。

然而题目并没有要求在线。 所以离线。

问题由删边转化为加边。

考虑加的每一条边:

如果两个点没有联通,直接联通。

如果两个点已经联通,那么两个点之间存在一条唯一路径。

加上当前边,会形成一个简单环。

找出这个简单环上的最大边权,删掉那一条边就可以了。

实际操作中并没有涉及到简单环,其实是查询两点之间的最大边权,并尝试用当前边替换最大边。

 

 

 

GERALD07加强版

一些求联通块问题,比较优秀的解法是:

形成生成树组成的森林,利用每棵树点数-边数=1的性质,答案为总点数-总边数。

本题的做法类似数颜色问题的主席树解法:

从编号为1的边开始尝试插入lct,

如果已经形成简单环,那么替换掉简单环上编号最靠前的边

并将该边的前趋设为替换的边,将前趋表示在主席树上。

每次询问,其实就是问:

n-区间中有多少用到的边,

后者查询主席树区间[l,r]内,权值小于l的就可以了。

posted @ 2019-09-17 17:26  skyh  阅读(298)  评论(0编辑  收藏  举报