数据结构:模拟堆

devtools/2024/9/24 23:15:39/

数据结构:模拟堆

    • 题目描述
    • 参考代码

题目描述

在这里插入图片描述
输入样例

8
I -10
PM
I -10
D 1
C 2 8
I 6
PM
DM

输出样例

-10
6

参考代码

#include <iostream>
using namespace std;const int N = 1e5 + 10;
int h[N], hp[N], ph[N];
int n, m;// 堆内交换操作传入的是堆中的下标
void heap_swap(int a, int b)
{swap(ph[hp[a]], ph[hp[b]]); // 这个才是核心swap(hp[a], hp[b]); // 这个是辅助swap(h[a], h[b]);
}void down(int u)
{int t = u;if (u * 2 <= n && h[t] > h[u * 2]) t = u * 2;if (u * 2 + 1 <= n && h[t] > h[u * 2 + 1]) t = u * 2 + 1;if (t != u){heap_swap(t, u);down(t);}
}void up(int u)
{while (u / 2 && h[u] < h[u / 2]){heap_swap(u, u / 2);u >>= 1;}
}int main()
{int s;cin >> s;string op;while (s--){cin >> op;if (op == "I"){int x;cin >> x;n++, m++;hp[n] = m, ph[m] = n;h[n] = x;up(n);}else if (op == "PM") cout << h[1] << endl;else if (op == "DM"){heap_swap(1, n);n--;down(1);}else if (op == "D"){int k;cin >> k;k = ph[k];heap_swap(k, n);n--;down(k), up(k);}else{int k, x;cin >> k >> x;k = ph[k];h[k] = x;down(k), up(k);}}return 0;
}

http://www.ppmy.cn/devtools/46480.html

相关文章

“仿RabbitMQ实现消息队列”---整体架构与模块说明

顾得泉&#xff1a;个人主页 个人专栏&#xff1a;《Linux操作系统》 《C从入门到精通》 《LeedCode刷题》 键盘敲烂&#xff0c;年薪百万&#xff01; 一、概念性框架理解 我们主要实现的内容&#xff1a; 1.Broker服务器&#xff1a;消息队列服务器&#xff08;服务端&…

Java_collection

集合的体系结构 Collection 单列集合 Map 双列集合 Collection 代表单列集合&#xff0c;每个元素(数据)只包含一个值。 Map代表双列集合&#xff0c;每个元素包含两个值(键值对)。 Collection 接口、实现类 List系列集合&#xff1a;添加的元素是有序、可重复、有索引 Array…

Jira的原理及应用详解(五)

本系列文章简介&#xff1a; 在当今快速发展的软件开发和项目管理领域&#xff0c;有效的团队协作和精确的项目进度追踪是确保项目成功的关键。Jira作为一款广受欢迎的项目和问题追踪工具&#xff0c;以其强大的功能、灵活的定制性以及卓越的用户体验&#xff0c;赢得了全球众多…

sql注入及sqlmap使用(未完)

sql注入点判断及sqlmap使用 前言Mysql数据库默认数据库1、暴库、版本2、 暴schema3、爆表、暴库4、暴列5、爆字段6、布尔、报错、延时(bp爆破)一、sql类型1、 参数类型:a、数字型b、字符型c、搜索型2、提交类型:a、POST提交注入b、GET注入c、HTTP HEAD注入d、cookie注入3、有…

Windows 宿主机访问 VirtualBox 虚拟机中创建的 docker 容器中的 mysql8.0 的数据

一、场景需求 在开发环境中&#xff0c;一般使用 windows 系统进行开发&#xff0c;但需要在 linux 系统中创建运行 mysql8.0 的 docker 容器中进行测试&#xff08;win10特定版本或win11才能安装 docker&#xff09;&#xff0c;为了方便还需要在 windows 系统中通过 SQLyog …

什么是室内外一体化定位

室内外一体化定位是一种技术&#xff0c;它允许在室内外环境中对设备或人员进行连续、无缝的定位跟踪。这种技术结合了多种定位技术的优势&#xff0c;以克服单一技术在室内外环境中可能遇到的局限性。 室内外一体化定位通常涉及以下几种技术&#xff1a; 1. 卫星定位系统&am…

【iOS】UI学习(二)

UI学习&#xff08;二&#xff09; 进度条和滑动条步进器与分栏控件警告对话框和提示等待器UITextFieldUITextField控件UITextFieldDelegate协议 UIScrollView布局子视图手动布局子视图自动布局子视图 进度条和滑动条 下面通过一个程序来讲解该内容&#xff1a; #import <…

Golang | Leetcode Golang题解之第131题分割回文串

题目&#xff1a; 题解&#xff1a; func partition(s string) (ans [][]string) {n : len(s)f : make([][]int8, n)for i : range f {f[i] make([]int8, n)}// 0 表示尚未搜索&#xff0c;1 表示是回文串&#xff0c;-1 表示不是回文串var isPalindrome func(i, j int) int8…