LCT 12 - 02 学习记录

简单讲一讲吧

lct 可以维护一个有根树森林,支持对树的分割, 合并, 对某个点到它的根的路径的某些操作。在我的理解上, lct 就是动态版的链剖,所以它和链剖一样可以维护子树信息,但是十分毒瘤
每个结点有且只有一个 Preferred child ,类似树链剖分中的重儿子,将每棵树划分为若干 Preferred path ,每条 Preferred path 用一棵 Auxiliary tree (以深度为关键字的 Splay )维护,然后将不同的 Auxiliary tree 通过 path parent 连接起来,形成整个树结构。
Auxiliary tree 比一般的 Splay 多维护一个信息 isroot[] ,表示某结点是否为其所在辅助树的根。所以 Splay(u) 的终止条件变为 isroot[u]==true
所以说 splay 在某种意义上是弱化的 Auxiliary tree ,而且比这玩意儿后发明(雾
lct 最重要的操作是 access ,即将一个节点到根的路径改为一条 Preferred path ,使该节点无 Preferred child ,本质上是某个节点到根的路径上所有点都被拉到同一颗 splay 中。
下面开始口胡例题

bzoj2002 [Hnoi2010]Bounce 弹飞绵羊

我校有着分块的优良传统
将一个装置向它能弹到的装置连边,使原序列转化为一个森林。修改对应一次cut和一次link操作,询问变为输出一个节点到其所在树的根的路径上的点数,lct就可以很好的维护了。

bzoj2049 [Sdoi2008]Cave 洞穴勘测

模板题,用基本的几个操作即可轻松实现。

bzoj1036 [ZJOI2008]树的统计Count

这题我是链剖写的,凡是可以用链剖的题都可以用 lct ,且效率更高(少一个 log ),也好写,几乎是模板。

poj2763 Housewife Wind

有一点套路吧。边权转化为点权,直接 lct 即可。

bzoj3669 [NOI2014]膜法森林

把边按a从小到大排序,然后一条条加边,动态维护b的最小生成树。
假设现在加入的边是 (x,y)a b
那么 =min(a+1nb)

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值