左偏树,可合并堆

news2024/11/27 12:52:58
  • O(logn)合并两个堆并维护最小或最大性质
  • 解决树上节点问题,从叶节点往根维护,每个节点看作一个堆
  • hi[x]表示到最近的叶节点的距离
  • hi[ls[x]]>=hi[rs[x]],所以每次对rs[x]合并(rs[x]树高矮)
  • hi[x]=hi[rs[x]]+1
  • fa[x]表示堆的顶点对应下标
  • 关键代码
  • static void dfs(int x){
            for(int i=head[x];i>0;i=e[i].nxt){
                int y=e[i].to;
                dfs(y);
                fa[x]=merge(fa[x],fa[y]);
            }
            while(s[fa[x]]<h[x]&&fa[x]!=0){//根据条件,删除堆顶
              //pushdown……懒标记
                fa[x]=merge(ls[fa[x]],rs[fa[x]]);
            }
    }
    static int merge(int x,int y){
            if(x==0||y==0)return x+y;
            //pushdown……
            if(s[x]>s[y]){//判定小于条件(小根堆)
                int t=x;x=y;y=t;
            }
            rs[x]=merge(rs[x],y);
            if(hi[ls[x]]<hi[rs[x]]){
                int t=ls[x];ls[x]=rs[x];rs[x]=t;
            }
            hi[x]=hi[rs[x]]+1;
            //pushup……维护子树和,子树大小……
            return x;
        }

  • 若多个指定同一节点

  • for(int i=1;i<=m;++i){
         fa[c[i]]=merge(fa[c[i]],i);//直接维护节点堆
    }
  • 因为在树上操作从叶子到根,fa[x]直接就是堆顶

  • 若是要查找指定点所在堆的堆顶,需要跳fa[x],采用路径压缩加速

  • 注意删除时对fa[x]的维护

  •  fa[ls[x]]=fa[rs[x]]=fa[x]=merge(ls[x],rs[x]);

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1708617.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

科技守护,河流水文监测保障水资源安全!

中小河流是城乡水资源的补给&#xff0c;又是不可或缺的排放渠道&#xff0c;维系着城乡水资源的平衡与生态的健康。然而&#xff0c;随着工业化、城市化的快速推进&#xff0c;河流生态环境面临着越来越大的压力。为了有效保护和合理利用河流资源&#xff0c;河流水文监测成为…

2024吉林省电赛(达盛杯)

1. 电赛F4系统板3D图 提起自制STM32F407VET6系统板 2. 电赛原理图 3. 电赛PCB图 4. 智能车实物图 下图是电赛的实物图&#xff0c;结构采用3D打印 5. 软件设计 下图是程序设计图 6. 仿真视频 (1) 变化高度 2024吉林省电赛仿真1 (2) 变化轮距 2024电赛仿真2 7. APP控制小车 …

vue项目中使用json编辑器

实现效果&#xff1a; 借助插件json-editor-vue3实现效果如图一&#xff0c;如果嫌丑可以通过类名改一下样式如图二。 实现过程&#xff1a; 安装插件&#xff1a;npm install json-editor-vue3 文档链接&#xff1a;GitCode - 开发者的代码家园 <script setup name&quo…

Django 入门教程

1. Django简介 基本介绍 Django 是一个由 Python 编写的一个开放源代码的 Web 应用框架。 MVC 与 MVT 模型 MVC 模型 MVC 模式&#xff08;Model–view–controller&#xff09;是软件工程中的一种软件架构模式&#xff0c;把软件系统分为三个基本部分&#xff1a;模型&am…

NSSCTF中的pop、babyupload、cve版本签到、奇妙的MD5、easy_html

目录 [SWPUCTF 2021 新生赛]pop [NISACTF 2022]babyupload ​编辑[GKCTF 2020]cve版签到 [SWP5UCTF 2022 新生赛]奇妙的MD5 [HNCTF 2022 Week1]easy_html 今日总结&#xff1a; [SWPUCTF 2021 新生赛]pop 1.代码审计 <?phperror_reporting(0); show_source("…

文本匹配.grep与Select-String用法对比

Linux Shell与PowerShell上匹配字符串 grep与Select-String用法对比 - 文章信息 - Author: 李俊才 (jcLee95) Visit me at CSDN: https://jclee95.blog.csdn.netMy WebSite&#xff1a;http://thispage.tech/Email: 291148484163.com. Shenzhen ChinaAddress of this article…

Lin网络二

目录 根据域名查找出IP地址的流程&#xff1a; DNS域名的功能&#xff1a; 正向解析&#xff1a; 反向解析&#xff1a; DNS的端口&#xff1a; DNS域名解析工作原理&#xff1a; DNS域名解析查询方式&#xff1a; 递归查询&#xff1a;&#xff08;简单来说就是将DNS解…

ICML 2024 | 北大、字节提出新型双层位置编码方案,有效改善长度外推效果

在这项工作中&#xff0c;我们利用语言序列的内在分段特性&#xff0c;设计了一种新的位置编码方法来达到更好的长度外推效果&#xff0c;称为双层位置编码&#xff08;BiPE&#xff09;。对于每个位置&#xff0c;我们的 BiPE 融合了段内编码和段间编码。段内编码通过绝对位置…

LOTO示波器软件新增导览功能

新版本的大部分型号LOTO示波器的上位机软件我们改成了导航工具条方式。原来的方式是把所有功能都显示在不同的标签页中&#xff0c;这样的优点是非常快捷方便&#xff0c;基本上用鼠标一两次点击就能直达想要的功能设置。但是缺点是不熟练的客户可能记不住各种功能的标签位置在…

安全攻防三

一、IDS: 当黑客绕过了防火墙&#xff0c;你该如何发现&#xff1f; IDS &#xff08;Intrusion Detection System&#xff0c;入侵检测系统&#xff09; NIDS 内网中检测网络流量攻击 黑客如果已经进去内网&#xff0c;防火墙就没办法保护了 NIDS部署在交换机和路由器这些路…

曲线拟合工具软件(免费)

曲线拟合是数据处理中经常用到的数值方法,本质是使用某一个模型(方程或者方程组)将一系列离散的数据拟合成平滑的曲线或者曲面,数值求解出对应的函数参数,大家可以利用MATLAB的曲线拟合工具箱也可以使用第三方的拟合软件,今天我们介绍Welsim免费的曲线拟合软件 1、MATLA…

视频技术在智慧营业厅中的应用:AI识别与智能化转型

一、方案背景 随着信息技术的快速发展&#xff0c;图像和视频分析技术已广泛应用于各行各业&#xff0c;特别是在营业厅场景中&#xff0c;该技术能够有效提升服务质量、优化客户体验&#xff0c;并提高安全保障水平。TSINGSEE青犀智慧营业厅视频管理方案旨在探讨视频监控和视…

Kafka之【存储消息】

数据已经由生产者Producer发送给Kafka集群&#xff0c;当Kafka接收到数据后&#xff0c;会将数据写入本地文件中。 存储组件 Kafka 的消息存储涉及多个关键组件&#xff0c;每个组件在消息的存储和管理过程中扮演着特定的角色。以下是 Kafka 存储消息过程中涉及的主要存储组件及…

linux--实时性优化

linux--实时性优化 1 介绍2 实时性需求3 代表性实时系统4 嵌入式系统嵌入式软件系统结构处理器时钟节拍多任务机制任务调度方式任务调度算法时间片调度算法优先级调度算法基于优先级的时间片调度算法 5 cyclictest 测试工具命令说明 6 linux 实时性改进某版本上发布实时补丁或者…

(三)MySQL 索引

欢迎访问 什么是索引&#xff1f; 提高查询效率的一种数据结构&#xff0c;索引是数据的目录 索引的分类 按「数据结构」分类&#xff1a;Btree索引、Hash索引、Full-text索引。按「物理存储」分类&#xff1a;聚簇索引、二级索引。按「字段特性」分类&#xff1a;主键索引…

JavaScript: Uncaught SyntaxError: Invalid or unexpected token

好久没有碰前端的代码了。。。 今天测试WebSocket功能&#xff0c;Client端&#xff1a;使用HtmlJavaScript&#xff0c;通过浏览器解析后&#xff0c;当做客户端&#xff1b; 客户端代码如下&#xff1a; <!DOCTYPE html> <html lang"en"><head&g…

装饰模式:鸡腿堡

文章目录 UML类图目录结构Humburger.javaChickenBurger.javaCondiment.javaChuilli.javaLettuce.javaTest.java深度理解test怎么写 UML类图 目录结构 我们从指向最多的开始写 Humburger.java package zsms;public abstract class Humburger {protected String name;public S…

学至乎没而后止也

开场白 学至后没而后止也这个题目的原话来自与荀子《劝学》。大家知道什么意思吗&#xff1f;学习要学到你人没了&#xff0c;才算停止了。通俗点说就是只要没学死就往死里学&#xff0c;高雅点说就是要保持终身学习。 在以前说终身学习好像是一种良好习惯或品德&#xff0c;…

AIGC 009-DaLLE2遇见达利!文生图过程中另外一种思路。

AIGC 009-DaLLE2遇见达利&#xff01;文生图过程中另外一种思路。 0 论文工作 首先&#xff0c;遇见达利是我很喜欢的名字&#xff0c;达利是跟毕加索同等优秀的画家。这个名字就很有意思。 这篇论文提出了一种新颖的分层文本条件图像生成方法&#xff0c;该方法利用 CLIP&…

C语言笔记20 •整数和浮点数在内存中存储•

整数和浮点数在内存中存储 1.整数在内存中存储 整数在内存中存储比较简单&#xff0c;整数存储分为正整数存储和负整数存储。 对于有符号整数 符号位中0表示正整数&#xff0c;1表示负整数。 正整数在内存中存储&#xff1a; 正整数原码&#xff0c;反码 &#xff0c;补码…