LCT笔记】的更多相关文章

目录 LCT 笔记 主要功能 和其它数据结构的比较 思想 虚实剖分 如何维护所有的链 实链 虚边 开始构思 具体要维护的功能(从基础到高级) Splay部分 access(u) make(u) find(u) split(u,v) link(u,v) cut(u,v) 复杂度 talk is cheap 最近在复习学过的省选算法,发现以前学的太不扎实了,太逊了,有必要做笔记整理一下 LCT 笔记 主要功能 在线维护树的加边和删边,以及树相关信息 复杂度只有一个 \(\log\),乘以维护信息的复…
先存个代码 #include<iostream> #include<cstring> #include<cstdio> #include<cmath> using namespace std; struct LinkCutTree{ struct node{ ],rev,sum; }t[]; ],v[]; int lr(int u){ ]==u; } bool ntrt(int u){ ]==u||t[t[u].fa].son[]==u; } void pu…
LCT学习笔记 前言 自己定的学习计划看起来完不成了(两天没学东西,全在补题),决定赶快学点东西 于是就学LCT了 简介 Link/Cut Tree是一种数据结构,我们用它解决动态树问题 但是LCT不叫动态树,动态树是指一类问题(那么LCT的中文名是啥啊) 这是⼀个和 Splay ⼀样只需要写几 (yi) 个 (dui) 核心函数就能实现一切的数据结构 动态树问题 维护一个森林,支持删除某条边,加入某条边,并保证加边,删边之后仍是森林.我们要维护这个森林的信息. 一般操作有两点连通性,两点路径权…
最近几天打算认真复习LCT,毕竟以前只会板子.正好也可以学点新的用法,这里就用来写做题笔记吧.这个分类比较混乱,主要看感觉,不一定对: 维护森林的LCT 就是最普通,最一般那种的LCT啦.这类题目往往就是用LCT维护森林,从而快速的实现一些链上操作:其中,某些题只是维护一棵形态固定的树,用树剖也可以做,复杂度 $n\log^2n$,如果使用LCT则变成了 $n\log n$:有的题目涉及断边连边,就必须使用LCT了.这次复习做的前几道题都属于这种,这几道题的难点其实不在LCT上,只要会敲模板就O…
\(LCT\)维护子树信息学习笔记 昨天\(FDF\)好题分享投了 \([ZJOI2018]\)历史 这题. 然后我顺势学学这个姿势. 结果调了一年...于是写个笔记记录一下. 基本原理 比较显然地,虽然父子关系在不断变化,但是重链与重链之间的连接是不变的.换句话说,一个点的某个虚儿子也许并不是他在原树中的某个儿子,但是这个点总和上来的信息是这整棵子树的. 所以我们定义这个点总和的信息(记为\(siz\))为总和该子树的所有信息, 然后记\(fsz\)为虚儿子的总和信息,\(val\)为单点信息…
今天听见茹大神20分钟讲完了LCT,10分钟讲完平衡树,5分钟讲完树剖,感觉自己智商还不及他一半... 还有很多不懂:2017/1/15 的理解: access是干什么用的? 不知道,只知道他是用来把某个节点到根的路径全部变成重链 其实是把splay分成很多个部分,一棵树中,不同链的东西用一个fa连起来,同一个用fa和child连起来 不同树似乎什么都不连起来. splay维护的是深度 rever:把一个点在他所在的树中变成根节点,这样使他的左子树空出来了,因为他是深度最浅的,没有比他更浅的.…
最近自学了一下LCT(Link-Cut-Tree),参考了Saramanda及Yang_Zhe等众多大神的论文博客,对LCT有了一个初步的认识,LCT是一种动态树,可以处理动态问题的算法.对于树分治中的树链剖分,只能处理静态的数据或者在轻重链上的边或点的权值,对于其他动态的处理就毫无办法了.因此我们就需要引入LCT这个东西.那么问题来了,LCT到底是什么呢?我弄了很久总算是理解了LCT,打算总结一下LCT的基本操作. ①浅谈对LCT的初步印象 LCT用来维护动态的森林,以及一些链上操作,是处理节…
\(emmm\)学\(lct\)有几天了,大概整理一下这东西的题单吧 (部分参考flashhu的博客) 基础操作 [洛谷P1501Tree II] 题意 给定一棵树,要求支持 链加,删边加边,链乘,询问链权值 四种操作. Sol: 大概是 \(lct\) 上维护加和乘标记的板子题 [SHOI2014 三叉神经树] 题意 给定一棵 $ 3\times n$ 个节点的树,编号在 \(1\sim n\) 的节点有且仅有三个儿子,编号在\(n+1\sim 3\times n\)的节点没有儿子.节点的值只…
这应该暂时是个终结篇了... 最后在这里讨论LCT的一个常用操作:维护虚子树信息 这也是一个常用操作 下面我们看一下如何来维护 以下内容转自https://blog.csdn.net/neither_nor/article/details/52979425 对于一个点x,如果我们对x进行access操作,那么他的虚子树内将包含且仅包含他原树中子树内除了他自己以外的所有点,这时如果我们维护了他的虚子树信息和,我们把这个信息与他自己的信息合并,我们就得到了他在原树中的子树信息 在下面的讨论中,我们发…
这一篇重点探讨LCT的应用 例:bzoj 2631 tree2(国家集训队) LCT模板操作之一,利用SPLAY可以进行区间操作这一性质对维护懒惰标记,注意标记下传顺序和如何下传 #include <cstdio> #include <cmath> #include <cstring> #include <cstdlib> #include <iostream> #include <algorithm> #include <qu…