当前位置: 首页 > news >正文

LCT学习笔记

从例题开始:

P3690 【模板】动态树(LCT)

对于一棵静态的树,常见方法是树剖然后走链,但是在动态的情况下常见的重链或长链就会很慢,因为修改连边情况后就不满足性质了

引入一个新的方法:实链剖分,对于一个节点,任选一个儿子,连边为实边,其余为虚边,注意这里的实边是可以变化的

但是显然这样剖分的形式就不固定了,所以之前线段树维护的方法就不成立了,但是可以用 splay 解决

此时树变成了若干条实边和虚边,连接在一起的实边成为实链

对每条实链进行维护,使得 splay 的中序遍历为原树上深度从小到大排序的结果

对于虚边,作用是把这些 splay 连起来,方式如下:

  1. 找到该 splay 深度最小的节点,记为 k,若为根则不管

  2. 找到它的 fa,由它向当前 splay 的根连边

因为一个节点会有多个儿子,但是它只会存一个,就是认父不认子

区别于普通 splay,因为实链之间不能相互影响,操作时还需要判断是否为当前 splay 的根,如果是,返回-1,rotate 和 splay 函数区别不大

access:就是把点 x 到根路径上的点全部变成实边

首先将 x 转到当前 splay 的根,然后将 x 与 fa 之间的边变成实边,就是放到右儿子,然后处理 fa 所在子树,重复此操作直到整棵树的根

同时因为将 x 到根打包成一个 splay,所以 x 原来的实儿子变成虚儿子

makeroot:将 x 节点设为所在联通快的根

首先打通 x 到根的路径,此时 x 一定在这个子树的中序遍历的最后一位

如果我们将它设为根,那么它就是深度最小的点,但是他的 fa 作为深度第二大的点,理应在倒数第二位,翻转后会在第二位,这部分可以打懒标记实现

所以最后就是打通 x 到根的路径,然后把 x 转到根,给 x 打标记

同时将 x 转到根时,路径上的标记要全部下放

split:就是把 x 到 y 的路径变成实链,然后分成新的 splay,操作上就是先把 x 换到整棵树的根,然后打通 y 到根的路径,最后将 y splay 到子树的根

findroot:就是找到 x 所在点的实链的根,可以先将 x 转到根,此时因为根深度最小,暴力往左边找,注意下放标记,最后要转回去

link:连边,将 x 换到根,然后判断 y 和 x 是否在同一个联通快,不在就连一条虚边

cut:断边,先判断是否在一个联通快内,然后将路径独立出来,此时 y 若与 x 相连,则 y 在 x 的父亲且中序遍历上相邻,所以 x 不能有右子树

http://www.sczhlp.com/news/115601/

相关文章:

  • Visual Studio 2026 Insiders 重磅发布:AI 深度集成、性能飞跃、全新设计
  • 《刚刚问世》系列初窥篇-Java+Playwright自动化测试-29- 操作单选和多选按钮 - 下篇(详细教程) - 北京
  • 自定义注解实现服务分处理-策略模式
  • 网站制作教程宁波网站推广哪家公司好
  • 海珠网站建设公司如何建一个公司的网站
  • 无锡企业网站seo排名优化软件
  • 简述一个网站设计的主要步骤阿里云域名注册优惠口令
  • 一个人做公司管理网站广告效果图用什么软件做
  • iOS26正式版全新风格!一文汇总实用新功能!
  • 远程控制应用的中的全球节点功能如何开启?插件类型、并发数量怎么选?
  • 借助Aspose.HTML控件,使用 Python 将 HTML 转换为 DOCX
  • 网站备案验证码错误高端网站开发平台
  • 网站建设的公司开发中山建网站咨询电话
  • 清远建设网站wordpress 公众号 采集器
  • appcms程序怎么做网站高端定制网站建设
  • 网站内容包括哪些上海网站建设润滋
  • 赣州热门网站安卓手机软件开发
  • 网站建设后的优势深圳外贸公司网站
  • 帮我写一篇网站打开网站代码怎么写
  • 遵义交通建设网站到那里找做网站的兼职
  • openEuler 24.03 (LTS-SP2)安装mysql 8.0.41
  • 7.数据库归档异常检查与处理
  • Gitlab 关键字
  • 8.listener日志占用过大处理方法
  • 马建仓AI助手完成全链路升级:三十余项新能力重塑研发工作流
  • 大连网站快速建设推荐合肥企业网站建设公司哪家好
  • 微商城手机网站制作阿里指数查询
  • 人社局网站建设步骤大连建设网联合收费
  • 网站后端性能优化措施企业网站模板 网页模板
  • 中山网站建设开发me wordpress