可以省去换根之类的操作#include <bits/stdc++.h>#define check(x) (tr[fa[x]][1] == x)#define isroot(x) (tr[fa[x]][0] != x && tr[fa[x]][1] != x)#define pushup(x) (sze[x] = sze[tr[x][0]] + sze[tr[x][1]]
转载
2021-03-03 11:05:28
139阅读
2评论
我已经忘了lct 1.lct能干什么 能维护一个序列,能做线段树做的事 能维护一颗静态的树,能做树链剖分和线段树做的事 能维护一个动态的序列,能做splay做的事 能维护一颗动态的树,能做splay和树链剖分的事 所以lct=splay+树链剖分 2.怎么维护 树链剖分是利用轻重链剖分的性质 那么l
转载
2018-01-05 20:44:00
90阅读
2评论
今天听见茹大神20分钟讲完了LCT,10分钟讲完平衡树,5分钟讲完树剖,感觉自己智商还不及他一半。。。 还有很多不懂:2017/1/15 的理解: access是干什么用的? 不知道,只知道他是用来把某个节点到根的路径全部变成重链 其实是把splay分成很多个部分,一棵树中,不同链的东西用一个fa连
转载
2017-01-15 21:55:00
58阅读
2评论
LCT学习笔记 前言 老吕又讲了LCT,据他说特别简单,于是就强行灌输。 引入 维护一棵树,维护以下的操作: 链上求和 链上求最值 链上修改 子树修改 子树求和 可能你第一眼想的是树链剖分,的确,这都是树链剖分的基本操作。 但是如果再增加一些操作呢 换根 断开树上的一条边 连接两个点,保证连接后仍是 ...
转载
2021-09-08 11:37:00
105阅读
2评论
LCT总结——应用篇(附题单)(LCT) 一般都是维护链的操作。split即可搞定。 进阶操作的话,处理好辅助树和原树的关系即可搞定。 其实,最大的区别就是,splay随便转,辅助树形态变了,但是原树形态不变,makert会让原树形态变化 LCT维护子树信息 真儿子会splay的时候各种变化,但是虚
转载
2018-12-18 23:00:00
247阅读
2评论
前言之前没怎么打过LCT,这次来苏州集训乘机补一个坑LCT功能十分强大,它可以维护一个森林的一系列问题LCT的结构一句话来说,就是对于森林里的每棵树做轻重链剖分,每条重链用splay维护LCT基本操作Access这是LCT最关键的操作access(x)是把x弄到与根在同一个splay上的操作,也就是把x到根的虚边全部变实边过程大概是:将x splay到x所属平衡树的根令x的右儿子为x’(初始x’=NULL)这相当于把虚边边实边令x’=x x=fa[x]重复上述过程,直到跳到根上代
原创
2021-07-13 11:24:35
152阅读
##LCT Upd: 一个细节:假如我们要修改某个节点的数据,那么要先把它makeroot再修改,改完之后pushup。 LCT是一种维护森林的数据结构,本质是用Splay维护实链剖分。 实链剖分大概是这样的:每个节点往一个儿子连实边,其它的儿子连虚边。 而我们用Splay维护实链剖分后的每一条实链
转载
2019-12-03 20:56:00
95阅读
2评论
前言 因为要改题,所以要去学$LCT$. 因为之前一直写$Treap$,所以还得去学个$splay$ 我都快忘了我本来目的是改题了。 \(Splay\) \(LCT\) \(书写ing\) ...
转载
2021-08-18 21:18:00
111阅读
2评论
LCT (Link - Cut Tree) 今天,YCC 本来是想搞一搞数论,但是老吕说:今天我闲着,给你们讲一讲LCT。 可是,我不闲啊! LCT 是什么? 是一个由若干棵子结点无序的有根树组成的森林,支持对树的分割, 合并, 对某个点到它的根的路径的某些操作, 以及对某个点的子树进行的某些操作。 ...
转载
2021-09-08 14:50:00
48阅读
填坑。 就是可以维护树上动态删边加边,链操作的数据结构。整体思想就是维护一个实链剖分,每个实链按深度用splay来维护。 有以下基本操作: 1.access(x),就是把根到x都搞成实链。直接自底向上,把当前splay接到上面splay的右儿子。 2.getroot(x) ,找x所在的根。acces ...
转载
2021-07-22 21:34:00
98阅读
2评论
一个LCT看了一天了,但是很多地方还是理解的很模糊,简单谈一下理解。 LCT支持的是对于森林的分裂、合并,以及查询节点的连通性等操作。 对于这片森林来说,它是由一坨树组成的,对于每一棵树,我们采用类似于树链剖分的方法,把它分割成若干条链,称为树链。 对于每条树链,维护它的顶点和父亲节点(就是顶点的父
转载
2017-01-16 17:57:00
61阅读
2评论
代码#include<bits/stdc++.h>#define R register int#define I inline void#define G if(++ip==ie)if(fread(ip=buf,1,SZ,stdin))#define lc c[x][0]#define rc c[x][1]using namespace std;const int SZ...
原创
2021-07-13 13:59:26
123阅读
HDU 5002#include #include #include #include #include #include #include #include #include #include #include #include using namespace std;const int INF = 0x3f3f3f3f;co
原创
2021-08-13 14:02:28
157阅读
$LCT$,真的是一个无比神奇的数据结构。它可以动态维护链信息、连通性、边权、子树信息等各种神奇的东西。而且,它其实并不难理解。
转载
2018-12-18 20:24:00
225阅读
2评论
最近在机房呆的时间蛮多 所以就有时间把以前学的算法复习一下 像lct这种代码量大且不好理解的代码, 一定要及时复习以前写的模板,多少有些缺陷 所以这次整理了一个优美的tip快要考试,我们的目标是:不掉人品,踏实肯干这里写代码片#include#include#incl...
转载
2017-09-17 19:00:00
75阅读
2评论
upd on 2021.10.17:终于来填坑了,我怕不是一个大鸽子( LCT,全称 Link Cut Tree,又称 LiChaoTree(bushi),是一种支持动态维护森林的数据结构,支持动态加边、加边、查询路径信息,有时也能支持查询子树信息,但是注意,这里的图时时刻刻必须是一棵森林,也就是说 ...
转载
2021-10-22 10:01:00
136阅读
2评论
题目描述给定n个点以及每个点的权值,要你处理接下来的m个操作。操作有4种。操作从0到3编号。点从1到n
原创
2022-07-05 10:29:53
95阅读
学LCT一段时间了我深深的理解其恶心之处 是代码写的让我难受,可能是一天写了3次LCT。 我 真的不想写了 况且期末考崩了,我 估计要GG了。完蛋! 这里先列举几个我经常犯的错误: 1 LCT和并查集混在一起fa数组写成f数组。 2 两点之间连边的时候必要的要去make_root其中一个点再连边不然
转载
2019-05-31 20:00:00
191阅读
2评论