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

浅谈 FHQ-Treap

本文同步发表在洛谷博客。


什么是 FHQ-Treap?

平衡树上存放两个信息,权值 \(val\) 以及随机索引 \(key\)。值满足二叉搜索树性质,随机值索引满足堆的性质,通过结合二叉搜索树和二叉堆的性质来使树平衡。至于这里用的是大根堆还是小根堆,不重要。

当权值 \(val\) 的数值情况不可控时,如果保证索引 \(key\) 为随机,树的期望深度为 \(\log n\)

通常的平衡树维护平衡的方法是旋转,而 FHQ-Treap 则是用分裂和合并来实现的。

详解 FHQ-Treap

FHQ-Treap 存放的节点信息

首先,有必不可少的权值 \(val\) 和随即索引 \(key\)。其次为了维护树的结构,肯定要有左节点编号 \(ls\) 以及右节点编号 \(rs\)。当然,为了求排名之类的东西,我们还会维护一个子树大小 \(sz\)。由于要维护的信息较多,这里采用结构体进行维护。

struct FHQ_Trp{int ls,rs,val,key,sz;}tree[N];

FHQ-Treap 的分裂操作

分裂,即 Split,是 FHQ-Treap 中必不可少的一环。

分裂方法有两种:

  1. 按值分裂:把树拆成两棵树,拆出来的一棵树的值全部小于等于给定的值,另外一棵树的值全部大于给定的值。
  2. 按大小分裂:把树拆成两棵树,拆出来的一棵树的值全部等于给定的大小,剩余部分在另外一颗树里。

通常来说,当 FHQ-Treap 作为正常平衡树使用时,采用按值分裂;维护区间信息时,用按大小分裂。

http://www.jsqmd.com/news/25912/

相关文章:

  • 2025 年天津保安公司最新推荐榜,技术实力与市场口碑深度解析
  • 接口自动化测试项目实战day1
  • 打破视频壁垒:视频融合平台EasyCVR如何实现多路视频监控上屏的高效管理?
  • MySQL MVCC:通过 ReadView与 undolog版本链 分析读提交RC和可重复读RR的原理 - 教程
  • upstream timed out (110: Connection timed out) while reading response header from upstream
  • Halcon算法——Hough变换
  • 2025 年不锈钢管源头厂家最新推荐排行榜:覆盖焊管、花纹管、菱形管、工业管等品类,结合协会测评数据精选优质品牌
  • 2025年挖泥船生产商权威推荐榜单:清淤船/挖沙船/绞吸船源头厂家精选
  • 99%的企业都不知道GEO搜索优化怎么做,讯灵AI来解答
  • 开了 8 年母婴店,靠微擎守住了 20000 会员的信任,再也不怕数据泄露
  • 建筑全场景安全监测 “无死角”!思通数科 AI 卫士多模态大模型覆盖文明施工、基坑与消防
  • 实况足球8下载安装教程(图文步骤 + 全流程配置指南)
  • SQL优化必备脚本:Oracle获取绑定变量的字面SQL文本
  • 20251029周三日记
  • 基于 Word 模板占位符的动态文档生成实践(源码+保姆版)
  • 坤驰科技荣膺国家级专精特新“小巨人”企业
  • 读书笔记:Oracle组合分区:像俄罗斯套娃一样管理数据
  • 自动对焦技术:TGV视觉检测方案中的关键
  • 红外热像仪 热成像相机 即插即用多场景适配
  • 详细介绍:K8s学习笔记(十一) service
  • vn.py的日志问题
  • Oracle故障处理:create table 引起select语句hang住出现library cache lock事件
  • OSI中七层模型
  • 2025 年西安苹果手机维修公司最新推荐榜,聚焦技术实力与用户口碑深度解析
  • Awesome GitHub Copilot:超级定制化AI编程助手工具集
  • 跟着视频学,从0开始学PostgreSQL数据库
  • SSD和HDD存储应该如何选择?
  • 基于大语言模型的浏览器自动化:playwright+browser-use
  • Halcon算法——分裂合并法
  • Git克隆远程仓库后,本地无感切换分支工作的验证