link-cut tree

动态树(准确说是维护森林)之一,支持连边,断边,求链上权值和等操作。

splay基础:会rotate和splay就行。还要会一点区间反转操作打标记。很基♂础的东西。

有重链,每条重链用splay来维护,splay中排名为这条重链中深度值,顺便把链的要维护信息(譬如链上点权和)统计了。

边分实边和虚边,实边有ch数组记录,虚边则没有。都有fa数组记录。
虚边链接两条重链。父子关系即原树的父子关系。

连到父亲的边为虚边的点就是这条重链的splay的根。

splay

splay(x)。先从上往下下放一遍,再执行splay。
注意rotate中如果y-z的边是虚边不用往回连。

access

access(x)。最主要操作&&最耗时间的操作,没有之一。

拉一条从x所在树的根节点到x的链。

从x开始往上拉,y初始化为0,每次先splay(x),x左子树为连上去的重链,右子树为连下去的重链。
断掉右子树的边,连成y。(断边指实变虚

makeroot

makeroot(x)。将x变成x所在树的根。
先access(x),这时有一条从root到x的重链。
然后splay(x),再在x上打一个反转标记(这条重链上的深度要反转)

split

split(x,y)。搞出一条重链,两端点为x和y。
makeroot(x),access(y),splay(y)。
不多解释了?
(我习惯把这个直接写进代码,so看不到split函数)

link

link(x,y)。连一条x-y的边。
makeroot(x),然后将FA♂x置为y。
这里连轻边没事的。

cut

cut(x,y)。割♂掉x-y的边。
split(x,y),然后x在y左儿子处不解释。
FA♂x=ch[y][0]=0。

find

找到x所在树的根。主要用于判断连通性???
先access(x),splay(x),再一直往左边走就找到根了。不解释了。。。

写到这里吧。

已经做了的板子题:
洞穴勘测
弹飞绵羊

【无图慎入】Link Cut Tree 总结的更多相关文章

  1. link cut tree 入门

    鉴于最近写bzoj还有51nod都出现写不动的现象,决定学习一波厉害的算法/数据结构. link cut tree:研究popoqqq那个神ppt. bzoj1036:维护access操作就可以了. ...

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

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

  3. Luogu 3690 Link Cut Tree

    Luogu 3690 Link Cut Tree \(LCT\) 模板题.可以参考讲解和这份码风(个人认为)良好的代码. 注意用 \(set\) 来维护实际图中两点是否有直接连边,否则无脑 \(Lin ...

  4. Link/cut Tree

    Link/cut Tree 一棵link/cut tree是一种用以表示一个森林,一个有根树集合的数据结构.它提供以下操作: 向森林中加入一棵只有一个点的树. 将一个点及其子树从其所在的树上断开. 将 ...

  5. Link Cut Tree学习笔记

    从这里开始 动态树问题和Link Cut Tree 一些定义 access操作 换根操作 link和cut操作 时间复杂度证明 Link Cut Tree维护链上信息 Link Cut Tree维护子 ...

  6. Link Cut Tree 总结

    Link-Cut-Tree Tags:数据结构 ##更好阅读体验:https://www.zybuluo.com/xzyxzy/note/1027479 一.概述 \(LCT\),动态树的一种,又可以 ...

  7. 学习笔记:Link Cut Tree

    模板题 原理 类似树链剖分对重儿子/长儿子剖分,Link Cut Tree 也做的是类似的链剖分. 每个节点选出 \(0 / 1\) 个儿子作为实儿子,剩下是虚儿子.对应的边是实边/虚边,虚实时可以进 ...

  8. Codeforces Round #339 (Div. 2) A. Link/Cut Tree 水题

    A. Link/Cut Tree 题目连接: http://www.codeforces.com/contest/614/problem/A Description Programmer Rostis ...

  9. 洛谷P3690 Link Cut Tree (模板)

    Link Cut Tree 刚开始写了个指针版..调了一天然后放弃了.. 最后还是学了黄学长的板子!! #include <bits/stdc++.h> #define INF 0x3f3 ...

随机推荐

  1. 给UIScrollView添加category实现UIScrollView的轮播效果

    给UIScrollView添加category实现UIScrollView的轮播效果 大家都知道,要给category添加属性是必须通过runtime来实现的,本教程中给UIScrollView添加c ...

  2. [翻译] WPAttributedMarkup

    WPAttributedMarkup https://github.com/nigelgrange/WPAttributedMarkup WPAttributedMarkup is a simple ...

  3. Linux 重定向详解

    常用的命令展示 >: 输出重定向             没有会创建文件echo hello > h.txt          也可以清空文件 >h.txt    >>: ...

  4. Coursera-AndrewNg(吴恩达)机器学习笔记——第二周编程作业(线性回归)

    一.准备工作 从网站上将编程作业要求下载解压后,在Octave中使用cd命令将搜索目录移动到编程作业所在目录,然后使用ls命令检查是否移动正确.如: 提交作业:提交时候需要使用自己的登录邮箱和提交令牌 ...

  5. php 实现八皇后问题

    php实现的八皇后问题,可以推广到N皇后 <?php class Empress{ private $queen;//存储位置,例如$queen[2] = 3表示第三行的第四列位置,行列从0计数 ...

  6. SAP NetWeaver BPM

    什么是BPM? BPM是Business Process Management的缩写,翻译过来是业务流程管理.BPM本身并没有明确的定义,它更多的是一种概念,这个概念本身的产生来源于企业对众多业务系统 ...

  7. 【bzoj5016】[Snoi2017]一个简单的询问 莫队算法

    题目描述 给你一个长度为N的序列ai,1≤i≤N和q组询问,每组询问读入l1,r1,l2,r2,需输出 get(l,r,x)表示计算区间[l,r]中,数字x出现了多少次. 输入 第一行,一个数字N,表 ...

  8. 4199. [NOI2015]品酒大会【后缀数组+并查集】

    Description 一年一度的“幻影阁夏日品酒大会”隆重开幕了.大会包含品尝和趣味挑战两个环节,分别向优胜者颁发“首席品 酒家”和“首席猎手”两个奖项,吸引了众多品酒师参加.在大会的晚餐上,调酒师 ...

  9. 【bzoj2693】jzptab 莫比乌斯反演+线性筛

    题目描述 输入 一个正整数T表示数据组数 接下来T行 每行两个正整数 表示N.M 输出 T行 每行一个整数 表示第i组数据的结果 样例输入 1 4 5 样例输出 122 题解 莫比乌斯反演+线性筛 由 ...

  10. 9、Android---UI---Material Design

    9.1.什么是Material Design 由谷歌的设计师基于传统优秀设计原则,结合丰富的创意和科学技术所发明的一套全新的界面设计语言 包含了视觉.运行.互动等效果 Material Design的 ...