首页 > 其他分享 >LCT

LCT

时间:2024-11-02 17:20:35浏览次数:2  
标签:LCT int son Splay fa dx

前置知识:Splay和文艺平衡树

介绍

Link Cut Tree,简称LCT,

时间复杂度分析

细节

原splay函数

Rotate()中,注意son[z][]的赋值要有限制语句isroot(y),因为z可能是“认父亲不认儿子”的splay根节点的父亲(Splay()中的限制管不到,因为Splay()只考虑父亲,但Rotate()要考虑爷爷)

void Rotate(int x) {
	int y=fa[x],z=fa[fa[x]];
	bool dx=dir(x),dy=dir(y);
	son[y][dx]=son[x][!dx];
	if(!isroot(y)) son[z][dy]=x;	//注意特判
	fa[x]=z; fa[y]=x;
	fa[son[x][!dx]]=y;
	son[x][!dx]=y;
	Pushup(y); Pushup(x);
}

Splay()前,用Update(x)从该splay树的根到x依次Pushdown(),保证方向正确(文艺平衡树有解释)

void Update(int x) {
	if(!isroot(x)) Update(fa[x]);
	Pushdown(x);	//用递归写
}

LCT特有函数

连续的Access(x),Access(y),返回值(最后一次并入的虚节点)为LCA(x,y)(x,y连通时),必要时可获取返回值

Access(x)会使x失去右儿子,这使得Split(x,y)会形成一棵根为y,最左边叶子为x,且y无右儿子的树

Link()用Makeroot()和Findroot()判连通

Cut()可以用set快速判边的存在性

代码

link

应用

标签:LCT,int,son,Splay,fa,dx
From: https://www.cnblogs.com/zhone-lb/p/18522236

相关文章

  • LCT 学习笔记
    \(\text{LCT}\)学习笔记可曾久仰\(\text{LCT}\)大名,可曾听闻\(\text{Splay}\)骂名?动态树对于一棵有\(n\)个节点的树,如果每个点都有点权,那么求解\(x,y\)之间的路径上的点权和可以用树链剖分+线段树简单做到。考虑对于一棵\(n\)个节点的动态树,也就是可以删除某一条边......
  • journalctl日志持久化
    默认情况下journalctl日志服务会把日志集中保存在单一结构化的日志文件/run/log默认情况下并不会持久化保存日志、每次重启后,之前的日志都会丢失。那我们如何配置journalctl日志持久化呢?日志持久化的主要优点在于,它可以帮助我们保存重启后的日志信息,以便在需要时进行查阅和分析......
  • 【命令操作】查看和分析系统各类日志--journalctl
    原文链接:【命令操作】查看和分析系统各类日志–journalctl|统信|麒麟|方德Hello,大家好啊!今天给大家带来一篇关于Linux系统上journalctl命令详解的文章。journalctl是systemd的日志查看工具,用于查看和管理系统日志,包括内核消息、服务日志、用户日志等。通过journalctl......
  • LCT 优化 Dinic
    我觉得这东西有必要记一下,因为光是看PPT很难自己写出代码……具体步骤相关啥都没写。另外学这个东西也不是很必要……Solution我们需要一个维护最小值、最小值编号,支持区间加的LCT。需要支持以下操作:\(find\_root(u)\)\(link(u,v)\)\(cut(u,v)\)\(find\_min(v)\)\(add......
  • journalctl -k 查看驱动输出信息
    Aug2307:07:16ubuntukernel:JWNetFilter:loadingout-of-treemoduletaintskernel.Aug2307:07:16ubuntukernel:JWNetFilter:moduleverificationfailed:signatureand/orrequiredkeymissing-taintingkernelAug2307:07:16ubuntukernel:JWNetFilte......
  • LCT小记
    简介LCT是常用的一种动态树。对于一般的树上问题,我们会用树剖解决,但是如果遇到动态增删边的问题就需要LCT来解决。LCT的本质上是一种链剖分,我们将所有的边剖分为虚边和实边,所以整棵树是由若干条实链构成的,实链之间用虚边相连。我们通过splay来维护实链的信息,并以从上到下......
  • Journalctl命令常见用法
    1、查询指定时间范围内的日志journalctl--since"2023-01-0100:00:00"--until"2023-01-0223:59:59"journalctl-usshd--since"2023-05-01"--until"2023-5-31"-n202、查询指定系统单元服务的日志journalctl-unginx--sinceyesterdayjournalc......
  • R语言、SAS潜类别(分类)轨迹模型LCTM分析体重指数 (BMI)数据可视化|附代码数据
    全文下载链接: http://tecdat.cn/?p=26105 最近我们被客户要求撰写关于LCTM的研究报告,包括一些图形和统计输出。在本文中,潜类别轨迹建模(LCTM)是流行病学中一种相对较新的方法,用于描述生命过程中的暴露,它将异质人群简化为同质模式或类别。然而,对于给定的数据集,可以根据类的数......
  • vue3+node.js+mysql+electron+express实现用户登录,文章写入删除,全量更新,增量更新,和截
    第一件事情是安装node.js,去官网下,在终端node-v,npm-v有版本号就行了,不必搞环境配置,保姆级别教程,感谢哥有时间。嘻嘻,祝大家开心。1.首先你要创建electron项目打开vscode,新建终端输入代码npminit这个代码是初始化的意思会生成一个文件package.json里面的代码应该是这......
  • [LCTF 2018]bestphp's revenge php原生类的利用以及php_session反序列化相关
    今天继续来一道反序列化的题目。点击查看代码<?phphighlight_file(__FILE__);$b='implode';call_user_func($_GET['f'],$_POST);session_start();if(isset($_GET['name'])){$_SESSION['name']=$_GET['name'];}var_dump......