LCT笔记

解决问题:动态插入/删除边,维护splay可以进行维护的东西

1.普通的维护信息

[HNOI2010]弹飞绵羊

建树:从i连向i+w

难点在于加边是单向的,故不支持换根

所以要改变link/cut的写法

link:保证图每时每刻都是森林,所以只有一个父亲,直接连边即可

cut:也是直接删边

答案是i到树根的经过节点,直接统计即可

2.判断是否联通

方法:将x设为树根,然后y连接树根,splay(y)后一直走左儿子,如果x在最左边的话就在一个联通块里,否则不是

[AHOI2005] 航线规划

反着来,删边->反着算建边

每次加边时候判断是否联通,若已经联通,在加入这条边令这两点直接所有边都是不必要的边

用并查集将他们缩点

答案是两点中间的点数-1

3.维护边权

将每一条边化为一个点即可

最常见用法是lct维护各种生成树,思路都是贪心连边,如果两点已经联通,贪心判断哪一条边好,否则直接加入即可

P4234 最小差值生成树

按照权值排序,从小到大加边

要最大值-最小值最小,所以每次加边时候如果是联通的就直接cut掉即可(最小尽量大),然后加边

4.维护子树信息

所有保持的信息都是虚拟子树上的

若想维护子树,需要开一些不变的信息(只有加边删边等操作会变)

[BJOI2014]大融合

要维护子树大小

加入一个维护的信息代表着除了现在的实儿子外的虚子树的大小

需要在加边和access(会改变儿子虚实)时候更新

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值