我居然还不会LCT QAQ真是太弱了

必须学LCT QAQ

——————————————————线割分是我www———————————-

LinkCut-Tree是基于Splay(由于Splay能够非常快的支持合并和分离,当然fhqTreap也能够可是复杂度会多一个log)的一种动态维护树的权值形态的方法.基本做法是基于轻重链(注意这里的轻重链和树链剖分的轻重链定义并不一样)将树分成若干Splay森林,然后对这个Splay森林进行各种鬼畜的操作.

由Sleator和Tarjan发明,操作和查询的复杂度是O(log n) .

对于每个Splay,其内部排序keyword是Splay中的节点在原树里的深度.因此对其进行中序遍历,得到的结果是一个由浅到深的元素构成的序列.

LCT的基本操作:

1.Cut(x) 删除x与其父亲之间的边,即分离一棵子树变成两棵树

2.Join(v,w,c) 使v称为w的子节点,前提是v是一棵独立的子树的根节点且v,w不在同一棵子树内.即在不同树上的两点间连一条边权为c的边.

3.Find-Root(x) 返回x所在子树的根节点

4.Access(x) 将x到其根节点的路径作为一条新的重路径(会改动路径上经过节点的父亲信息和孩子信息)

5.parent(x) 返回x的父亲节点信息,假设x是根返回NULL

6.Find-cost(x) 返回x到其父亲节点的权值信息.

7.Min/MaxCost(x) 返回x到根节点的最小/最大权

8.Modify/Update(x,delta) 将x到根节点路径上的权值添加或降低delta.(注意到两次使用它能够做到改动一条边/一条链的权值)

9.Reverse/Evert(x) 将x设为根节点,并将x到原来的根节点上的边反向.(Evert是陈首元论文里用的词然而并不好记不如reverse经常使用啊…)

当中LCT最核心的操作就是Access.

在LCT中,我们称经过了Access操作的点为被訪问过的点.对于节点v,v和它全部儿子节点里最后被訪问过的点将被作为重路径(从这里能够看出来轻重链的定义和链剖是全然不一样的).

Access如何实现?暴力向上找父亲然后改动即可了…

可能你会认为这个东西复杂度非常渣…

事实上使用势能分析能够计算得到它的均摊时间复杂度是O(log n)的.(然而我并不会势能分析QAQ)

详细分析能够询问别的神犇或者參考集训队2006论文《维护森林连通性–动态树》陈首元和2007论文《对Qtree解法的一点研究》杨哲

对于LCT里的重链,链上相邻两个节点的父子关系是确定的.即父节点记录了其儿子节点是哪一个,儿子节点记录了其父节点是哪一个.而作为轻边而言,父节点并不会记录轻边上的儿子是哪些,可是轻边上的儿子会记录其父节点,这样为我们在进行Access操作提供了方便.

构造出的Splay森林构成LCT,又叫辅助树.

有时候我们也把重边叫实变边,轻边叫虚边.(有些人是这么叫的)

好像完毕了…

假设以后能够写的我再补.

假设哪位神犇发现我写的不正确或者有什么不全的请通知我改动

【动态树问题】LCT学习笔记的更多相关文章

  1. LCT 学习笔记

    LCT学习笔记 前言 自己定的学习计划看起来完不成了(两天没学东西,全在补题),决定赶快学点东西 于是就学LCT了 简介 Link/Cut Tree是一种数据结构,我们用它解决动态树问题 但是LCT不 ...

  2. 珂朵莉树(Chtholly Tree)学习笔记

    珂朵莉树(Chtholly Tree)学习笔记 珂朵莉树原理 其原理在于运用一颗树(set,treap,splay......)其中要求所有元素有序,并且支持基本的操作(删除,添加,查找......) ...

  3. LCT总结——概念篇+洛谷P3690[模板]Link Cut Tree(动态树)(LCT,Splay)

    为了优化体验(其实是强迫症),蒟蒻把总结拆成了两篇,方便不同学习阶段的Dalao们切换. LCT总结--应用篇戳这里 概念.性质简述 首先介绍一下链剖分的概念(感谢laofu的讲课) 链剖分,是指一类 ...

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

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

  5. LCT学习笔记

    最近自学了一下LCT(Link-Cut-Tree),参考了Saramanda及Yang_Zhe等众多大神的论文博客,对LCT有了一个初步的认识,LCT是一种动态树,可以处理动态问题的算法.对于树分治中 ...

  6. luoguP3690 【模板】Link Cut Tree (动态树)[LCT]

    题目背景 动态树 题目描述 给定N个点以及每个点的权值,要你处理接下来的M个操作.操作有4种.操作从0到3编号.点从1到N编号. 0:后接两个整数(x,y),代表询问从x到y的路径上的点的权值的xor ...

  7. LuoguP3690 【模板】Link Cut Tree (动态树) LCT模板

    P3690 [模板]Link Cut Tree (动态树) 题目背景 动态树 题目描述 给定n个点以及每个点的权值,要你处理接下来的m个操作.操作有4种.操作从0到3编号.点从1到n编号. 0:后接两 ...

  8. [总结] LCT学习笔记

    \(emmm\)学\(lct\)有几天了,大概整理一下这东西的题单吧 (部分参考flashhu的博客) 基础操作 [洛谷P1501Tree II] 题意 给定一棵树,要求支持 链加,删边加边,链乘,询 ...

  9. SPLAY,LCT学习笔记(四)

    前三篇好像变成了SPLAY专题... 这一篇正式开始LCT! 其实LCT就是基于SPLAY的伸展操作维护树(森林)连通性的一个数据结构 核心操作有很多,我们以一道题为例: 例:bzoj 2049 洞穴 ...

随机推荐

  1. 创建cifs系统案例之“实现将Windows磁盘共享至Linux”

    原创作品,出自 "深蓝的blog" 博客,欢迎转载,转载时请务必注明出处,否则追究版权法律责任. 深蓝的blog:http://blog.csdn.net/huangyanlong ...

  2. c# DataTable to Object Mapping

    public static class DataTableExtensions { public static IList<T> ToList<T>(this DataTabl ...

  3. 英语发音规则---P字母

    英语发音规则---P字母 一.总结 一句话总结: 1.P发[p]音? paper ['peɪpə] n. 纸 plane [pleɪn] n. 飞机 pig [pɪg] n. 猪 ship [ʃɪp] ...

  4. Oracle 11G R2 用exp无法导出空表解决方法

    四.  Oracle 10g以后增加了expdp和impdp工具,用此工具也可以导出空的表 oracleexpdp/impdp 用法详解 1)  创建逻辑目录,该命令不会在操作系统创建真正的目录,最好 ...

  5. 杂项:MSP(管理服务提供商)

    ylbtech-杂项:MSP(管理服务提供商) 随着外包市场的日益成熟,为了满足企业的需求,一个全新的业务方向被开发出来—MSP.MSP采用业界领先的系统管理技术,由经验丰富的系统管理专家通过WAN为 ...

  6. category的概念

    category 的意思应该是为基类添加一个子类的声明方法 可以在创建基类对象的时候访问到子类的对象方法 category 可以说是 类的扩展 也可以说是 将类分成了几个模块 需要注意的是 在cate ...

  7. 转:Eclipse上安装GIT插件EGit及使用

    一.Eclipse上安装GIT插件EGit Eclipse的版本eclipse-java-helios-SR2-win32.zip(在Eclipse3.3版本找不到对应的 EGit插件,无法安装) E ...

  8. ASP.NET中各种缓存技术的特点及使用场景

    对于一些不经常改变却经常被request的数据,我们喜欢将它们缓存在内存.这样用户请求时先到缓存中去取,如果缓存中没有,再去数据库拿,提高响应速度.缓存一般实现在BLL,这样可以与DAL分离,更换数据 ...

  9. 【摘录】JAVA内存管理-自动选择垃圾收集器算法

    在J2SE 5.0,垃圾收集的默认值:垃圾收集器.堆大小以及JVM的类型(客户端还是服务器)都会根据应用运行的硬件平台和操作系统自动选择.相比之前设置命令行参数的方式,自动选择很好的匹配了不同类型的应 ...

  10. Win8 Windows Defender default behaviour

    Problem Description ********************* Is it possible, to change the default behaviour when findi ...