一个LCT看了一天了,但是很多地方还是理解的很模糊,简单谈一下理解。

LCT支持的是对于森林的分裂、合并,以及查询节点的连通性等操作。

对于这片森林来说,它是由一坨树组成的,对于每一棵树,我们采用类似于树链剖分的方法,把它分割成若干条链,称为树链。

对于每条树链,维护它的顶点和父亲节点(就是顶点的父亲),并且用splay维护这个结构。

下面来定义几个关于节点u的东西:

  fa: v的父亲节点

  fpath: v所在的树链的父亲

  zson:v的子树中最后一次被access的点,如果是他自己,则没有zson

下面说几个操作:

  ①access:这是LCT中最基本的操作,它的作用是将v到根节点形成一条新的树链。

    操作结果:将v到根节点扫一遍,这样的话,从v到根节点会形成一条新的树链,且如果这条树链经过的某个节点u不是他父亲的zson,由于fa[u]的zson将变成u,所以,pa[u]原来的树链不再包含fa[u]及其以上的节点。

    操作过程:如果了节点v,那么他的zson就会消失,所以先将v转到它所在的splay的根节点,然后将右子树(对应的zson)分离,并把新得到的树链的fpath赋值为v。如果v所属的树链不包含根节点,设树链的fpath为u,就把u旋转到splay的根节点上,把v练到u的右子树上,那么u原来右子树的fpath设置为u,这样一来,便可到达根节点。

  ②cut:这个操作和splay的删除操作差不多,先把x转到splay的根节点,然后把y转到根节点,这样x就在y的左孩子的位置上,然后把c[y][0]和fa[x]清零。(不是很明白为什么要rev一下,听z爷说是要把x转移到它所在的树链的顶端,貌似有些道理。)

  ③join:将u转到根节点,然后重新赋值fa[u]即可。

参考论文:QTREE解法的一些研究

LCT的更多相关文章

  1. 一堆LCT板子

    搞了一上午LCT,真是累死了-- 以前总觉得LCT高大上不好学不好打,今天打了几遍感觉还可以嘛= =反正现在的水平应付不太难的LCT题也够用了,就这样好了,接下来专心搞网络流. 话说以前一直YY不出来 ...

  2. 动态树之LCT(link-cut tree)讲解

    动态树是一类要求维护森林的连通性的题的总称,这类问题要求维护某个点到根的某些数据,支持树的切分,合并,以及对子树的某些操作.其中解决这一问题的某些简化版(不包括对子树的操作)的基础数据结构就是LCT( ...

  3. 在此为LCT开一个永久的坑

    其实我连splay都还不怎么会. 今天先抄了黄学长的bzoj2049,以后一定要把它理解了. 写LCT怎么能不%数据结构大神yeweining呢?%%%chrysanthemums  %%%切掉大森林 ...

  4. 【BZOJ2157】旅游 LCT

    模板T,SB的DMoon..其实样例也是中国好样例...一开始不会复制,yangyang:找到“sample input”按住shift,按page down.... #include <ios ...

  5. 【BZOJ3669】[Noi2014]魔法森林 LCT

    终于不是裸的LCT了...然而一开始一眼看上去这是kruskal..不对,题目要求1->n的路径上的每个点的两个最大权值和最小,这样便可以用LCT来维护一个最小生成路(瞎编的...),先以a为关 ...

  6. 【BZOJ1180】: [CROATIAN2009]OTOCI & 2843: 极地旅行社 LCT

    竟然卡了我....忘记在push_down先下传父亲的信息了....还有splay里for():卡了我10min,但是双倍经验还是挺爽的,什么都不用改. 感觉做的全是模板题,太水啦,不能这么水了... ...

  7. 【BZOJ3282】Tree LCT

    1A爽,感觉又对指针重怀信心了呢= =,模板题,注意单点修改时splay就好,其实按吾本意是没写的也A了,不过应该加上能更好维护平衡性. ..还是得加上好= = #include <iostre ...

  8. BZOJ2888 资源运输(LCT启发式合并)

    这道题目太神啦! 我们考虑他的每一次合并操作,为了维护两棵树合并后树的重心,我们只好一个一个的把节点加进去.那么这样一来看上去似乎就是一次操作O(nlogn),但是我们拥有数据结构的合并利器--启发式 ...

  9. LCT裸题泛做

    ①洞穴勘测 bzoj2049 题意:由若干个操作,每次加入/删除两点间的一条边,询问某两点是否连通.保证任意时刻图都是一个森林.(两点之间至多只有一条路径) 这就是个link+cut+find roo ...

  10. 链剖&LCT总结

    在搞LCT之前,我们不妨再看看喜闻乐见的树链剖分. 树链剖分有一道喜闻乐见的例题:NOI2015 软件包管理器 如果你看懂题目了,你就会明白它是叫你维护一个树,这棵树是不会动的,要兹磁子树求和,子树修 ...

随机推荐

  1. addEventListener和attachEvent以及element.onclick的区别

    addEventListener和attachEvent以及element.onclick的区别 attachEvent是ie添加事件处理程序,接收两个参数,其中事件类型名称要加"on&qu ...

  2. 前端基于easyui的mvc扩展(续)

    前端基于easyui的mvc扩展(续) 回顾及遗留问题 上一篇讲解了基于easyui的mvc扩展的基本实现,已经降低了在mvc内使用easyui的难度,但是仍然还有一些问题: 当我们要给生成的控件设置 ...

  3. ASP.NET网页动态添加、更新或删除数据行

    ASP.NET网页动态添加.更新或删除数据行 看过此篇<ASP.NET网页动态添加数据行> http://www.cnblogs.com/insus/p/3247935.html的网友,也 ...

  4. linux学习之linux的hostname修改详解《转》

    linux的hostname是一个kernel变量,可以通过hostname命令来查看本机的hostname.也可以直接cat /proc/sys/kernel/hostname查看. #hostna ...

  5. WPF刷新界面之坎坷路

    WPF刷新界面之坎坷路 项目需要一个硬件检测功能,需要用到界面刷新,刚开始想用个定时器,对检测过的硬设定时添加后刷新界面. 但是很遗憾,定时器并不能进行刷新.后台检测List数据里面已经添加了很多了很 ...

  6. building android/ubuntu-touch on 32bit machine

    host C: libhost <= build/libs/host/CopyFile.c host StaticLib: libhost (/media/linux/1/touch/expor ...

  7. 配置Ubuntu Server高速apt-get源

    方法: 1.修改源地址:cp /etc/apt/sources.list /etc/apt/sources.list.backvim /etc/apt/sources.list 加入如下内容(中科大的 ...

  8. gRPC helloworld service, RESTful JSON API gateway and swagger UI

    概述 本篇博文完整讲述了如果通过 protocol buffers 定义并启动一个 gRPC 服务,然后在 gRPC 服务上提供一个 RESTful JSON API 的反向代理 gateway,最后 ...

  9. 【翻译】Asp.net Core介绍

    ASP.NET Core is a significant redesign of ASP.NET. This topic introduces the new concepts in ASP.NET ...

  10. [ios] 微信订阅号: ios博文精选

    晚上下班后时间充裕,平时要么看电视剧,要么玩游戏 感觉浪费时间.  最后决定自己也搞一个微信订阅号分享技术方面的东西,也提升自己. 如果大家也是一样情况,欢迎大家关注我的订阅号. 微信订阅号: ios ...