首页 > 其他分享 >【学习笔记】笛卡尔树

【学习笔记】笛卡尔树

时间:2025-01-05 22:14:05浏览次数:1  
标签:右链 笛卡尔 递增 笔记 儿子 学习 单调

本来早就该学笛卡尔树了,但暑假打模拟赛就一直没学成。于是就打算先不学了,结果又发现后面有个笛卡尔树专题,只好来学学。
笛卡尔树是一棵二叉树,每个点有一个键和一个值,键满足堆的性质,值满足二叉搜索树的性质。没错当键随即时,这就是个 Treap。
如果值单调递增,那么就可以线性建树。具体地,维护整棵树的右链。右链就是从根开始不停往右儿子走的链。因为值递增所以新加的点一定会在右链中。假设新加入的点 \(u\) 值为 \(k\) 键为 \(w\),记为 \((k,w)\),则从右链下端开始不断向上比较,找到一个 \(x\) 使它的键小于 \(w\)。那么 \(u\) 就成为 \(x\) 的右儿子,\(x\) 原本的右儿子就成为 \(u\) 的左儿子。放张图更直观(红色方框即为右链):

图中 insert 后面括号里的是值,图上圆圈里的是键。显然用单调栈来维护右链就行了。

标签:右链,笛卡尔,递增,笔记,儿子,学习,单调
From: https://www.cnblogs.com/zhangxyhp/p/18654035

相关文章

  • 2024-2025-1 20241409《计算机基础与程序设计》第十五周学习总结
    自我介绍很高兴加入2024计算机基础与程序设计(北京电子科技学院-网络空间安全)的班级的大家庭。第一周作业1.对《计算机基础与程序设计》进行了概述,有了基础的了解。2.学习了有关2进制、8进制、10进制、16进制之间的转换。第二周作业1.学习了《计算机科学概论》第一章......
  • 机器学习基础算法 (九) - AdaBoost
    点击进入:机器学习基础算法(一)-线性回归点击进入:机器学习基础算法(二)-逻辑回归点击进入:机器学习基础算法(三)-支持向量机(SVM)点击进入:机器学习基础算法(四)-决策树(DecisionTree)点击进入:机器学习基础算法(五)-随机森林:集成学习的强大力量点击进入:机器学习基础算......
  • 前端性能优化原理与实践笔记
    知识体系与小册格局写给读者提起性能优化,大家现在脑海里第一时间会映射出什么内容呢?可能是类似“雅虎军规”和《高性能JavaScript》这样历久弥香的经典之作,也可能是搜索引擎聚合给你的一篇又一篇以性能优化为主题的个人或团队实践而来的“私货”。至少当我确定自己的研发方向......
  • 基于YOLOv8深度学习的医学影像手背静脉目标检测系统
    随着医学影像分析在健康诊断中的广泛应用,手背静脉的目标检测成为一个具有挑战性且重要的研究领域。手背静脉具有独特的纹理特征,可以用于身份识别、健康监测以及医疗辅助系统。本文提出了一种基于YOLOv8深度学习模型的手背静脉目标检测系统,旨在提高手背静脉检测的准确性与实时性......
  • 学习流程-2025-01
    学习流程2025-01-041.springboot整合mybatis:1.1idea创建spring项目,勾选web、jdbc、mysql1.2集成mybatis:引入mybatis-spring-boot-starter1.3配置文件里配置数据源:application.properties里:#配置数据源spring.datasource.username=rootspring.datasource.password=rootsp......
  • [数据结构学习笔记5] 队列(Queue)
    队列和堆栈类似,但是它是一种先进先出的结构。FIFO(firstinfirstout)。代码实现,javascriptclassQueue{constructor(){this.items=newLinkedList();}clear(){this.items=newLinkedList();}contains(item){......
  • 线段树合并学习笔记
    前言模拟赛solution里说只需要利用线段树合并的思想……但是我不会线段树合并,就先学习了线段树合并。引入线段树合并是把每个对应节点合并。两棵线段树都有某个节点,就是把这两个点合成一个点;只有一棵线段树有某个节点,合并出来的线段树的这个节点就是这个唯一的节点。......
  • AAAT 笔记(P56491)
    实际上去掉主函数不长于线段树3。原理还没写#include<bits/stdc++.h>usingnamespacestd;#defineintlonglong#defineendl"\n"constintmaxn=4e5+5,INF=1e12;structtag{ intk,b; tag(intx=1,inty=0){k=x,b=y;}}rtag[maxn],vtag[maxn];structnode{ intmn......
  • java学习总结
    叶金祥202302151832第一章:初识Java与面向对象程序设计•核心概念与知识点•Java简介:Java是一种广泛使用的编程语言,具有跨平台性、面向对象、泛型编程等特性。•Java开发环境:包括JDK(JavaDevelopmentKit)、IDE(如Eclipse、IntelliJIDEA)等。•面向对象程序设计(OOP):OOP是一......
  • # 学期(如2024-2025-1) 学号(如:20241402) 《计算机基础与程序设计》第15周学习总结
    学期(如2024-2025-1)学号(如:20241402)《计算机基础与程序设计》第15周学习总结作业信息这个作业属于哪个课程<班级的链接>(如2024-2025-1-计算机基础与程序设计)这个作业要求在哪里<作业要求的链接>(如2024-2025-1计算机基础与程序设计第一周作业)这个作业的目标<写上......