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

数组模拟堆

文章目录

  • Question
  • Ideas
  • Code

Question

维护一个集合,初始时集合为空,支持如下几种操作:

I x,插入一个数 x

PM,输出当前集合中的最小值;
DM,删除当前集合中的最小值(数据保证此时的最小值唯一);
D k,删除第 k
个插入的数;
C k x,修改第 k
个插入的数,将其变为 x

现在要进行 N
次操作,对于所有第 2
个操作,输出当前集合的最小值。

输入格式
第一行包含整数 N

接下来 N
行,每行包含一个操作指令,操作指令为 I x,PM,DM,D k 或 C k x 中的一种。

输出格式
对于每个输出指令 PM,输出一个结果,表示当前集合中的最小值。

每个结果占一行。

数据范围
1≤N≤105

−109≤x≤109

数据保证合法。

输入样例:
8
I -10
PM
I -10
D 1
C 2 8
I 6
PM
DM
输出样例:
-10
6

Ideas

Code

#include <iostream>
#include <cstring>
#include <algorithm>
#include <string>using namespace std;const int N = 1e5 + 10;int cnt, h[N], ph[N], hp[N];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 (2 * u <= cnt && h[2 * u] < h[t]) t = 2 * u;if (2 * u + 1 <= cnt && h[2 * u + 1] < h[t]) t = 2 * u + 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 / 2, u);u >>= 1;}
}
int main()
{int n, m = 0;scanf("%d", &n);while (n -- ){int k, x;string op;cin >> op;if (op == "I"){int x;scanf("%d", &x);cnt ++;m ++;ph[m] = cnt, hp[cnt] = m;h[cnt] = x;up(cnt);}else if(op == "PM") printf("%d\n", h[1]);else if (op == "DM"){heap_swap(1, cnt);cnt --;down(1);}else if (op == "D"){int k;scanf("%d", &k);k = ph[k];heap_swap(k, cnt);cnt --;up(k);down(k);}else{int k, x;scanf("%d%d", &k, &x);k = ph[k];h[k] = x;up(k);down(k);}}return 0;
}

相关文章:

数组模拟堆

文章目录 QuestionIdeasCode Question 维护一个集合&#xff0c;初始时集合为空&#xff0c;支持如下几种操作&#xff1a; I x&#xff0c;插入一个数 x &#xff1b; PM&#xff0c;输出当前集合中的最小值&#xff1b; DM&#xff0c;删除当前集合中的最小值&#xff08;数…...

【深度学习基础知识(一):卷积神经网络CNN基础知识】

深度学习基础知识 深度学习基础知识&#xff08;一&#xff09;&#xff1a;卷积神经网络CNN基础知识 卷积神经网络CNN基础知识 0、目录 1. CNN卷积神经网络的特点 2. 卷积操作基础知识 2.1 卷积操作的概念2.2 卷积操作的种类2.3 卷积操作后特征图谱大小计算公式 3. 池化操…...

Git使用入门

一、Git简介 Git 是一个开源的分布式版本控制系统。 Git版本控制的功能为保存不同版本的代码&#xff0c;保存代码的地方叫做仓库。 每个仓库中有多个分支&#xff0c;每个分支上又有很多节点&#xff0c;每个节点代表一个版本&#xff0c;不同的分支可以进行合并&#xff0…...

电机矢量控制算法和例程

电机矢量控制算法是一种高级的电机控制方法&#xff0c;它通过将电机转子空间矢量转换到旋转坐标系中&#xff0c;并在该坐标系中进行控制来实现对电机的精确控制。下面是对电机矢量控制算法的详细解释&#xff1a; 坐标系变换&#xff1a;电机矢量控制首先将电机转子空间矢量变…...

std::string_view概念原理及应用

概念 使用const string&作为参数是先使用字符串字面量编译器会创建一个临时字符串对象然后创建std::string。 或者一个函数提供char*和const string&参数的两个版本函数&#xff0c;不是优雅的解决方案。 于是需要一个只使用内存不维护内存的类。 原理 在visual s…...

lodash库_.chunk、_.pick、_.omit、_.cloneDeep、_.debounce方法

lodash 模块化、高性能的 JavaScript 实用工具库。官方文档&#xff1a;https://www.lodashjs.com 1.对数组进行分组 _.chunk(array, [size1]) 使用场景&#xff0c;如移动端页面一行能放5个元素&#xff0c;总共7条数据&#xff0c;将一维数组转为二维数组&#xff0c;让一个…...

Java使用FFmpeg对视频文件打标记

免安装 FFmpeg <dependency><groupId>ws.schild</groupId><artifactId>jave-all-deps</artifactId><version>3.0.1</version><exclusions><!-- 排除windows 32位系统 --><exclusion><groupId>ws.sch…...

Redux 学习笔记

在使用 React Redux 前&#xff0c;我们首先了解一下 Redux 的一些基础知识。 Redux 是 JavaScript 应用程序中用于状态管理的容器。它不依赖于任何框架&#xff0c;可以与任何 UI 库和框架一起使用。在应用程序中使用 Redux 时&#xff0c;Redux 是以可预测的方式管理状态。 …...

【Bug】8086汇编学习

文章目录 随笔Bug1、masm编译报错&#xff1a;Illegal use of register2、debug中使用段前缀3、[idata]在编译器中的处理4、push立即数报错5、报错&#xff1a;improper operand type6、程序莫名跳转到未知位置 (doing)7、DOSBox失去响应8、程序运行显示乱码9、程序运行导致DOS…...

JetBrains系列IDE全家桶激活

jetbrains全家桶 正版授权&#xff0c;这里有账号授权的渠道&#xff1a; https://www.mano100.cn/thread-1942-1-1.html 附加授权后的一张图片...

洛谷p1618三连击

import java.util.Scanner; //将 1-9 共9个数分成3组&#xff0c;分别组成3个三位数&#xff0c;且使这3个三位数构成A:B:C的比例&#xff0c;试求出所有满足条件的3个三位数。不满足输出“No!!!”。 public class Main {public static void main(String[] args) {Scanner sc …...

微信公众号h5写一个全局调用微信分享功能

1. 首先先安装依赖 npm install weixin-js-sdk --save 2. app.vue文件 <script> export default { onLaunch: function(e) {}, onShow: function(e) { console.log(App Show页面初始); // 路由参数存缓存的 这是为了防止他…...

聊聊精益需求的产生过程

这是鼎叔的第七十八篇原创文章。行业大牛和刚毕业的小白&#xff0c;都可以进来聊聊。 欢迎关注本公众号《敏捷测试转型》&#xff0c;星标收藏&#xff0c;大量原创思考文章陆续推出。本人新书《无测试组织-测试团队的敏捷转型》​​​​​​​​​​​​​​已出版&#xff…...

Linux - 还不懂 gdb 调试器?(调试软件)

前言 当前&#xff0c;我们可以使用 make/makefile 来程序化执行代码文件&#xff1b;可以使用 gcc/g 等编译器来编译代码&#xff1b;可以使用 vim 编辑器来编写代码&#xff1b;其实在 Linux 当中还有一个工具&#xff0c;可以实现调试工作&#xff0c;这个工具就是 -- gdb。…...

Linux:程序地址空间/虚拟地址等相关概念理解

文章目录 程序地址空间虚拟地址和物理地址地址的转换地址空间是什么&#xff1f; 程序地址空间 在C和C程序中&#xff0c;一直有一个观点是&#xff0c;程序中的各个变量等都会有一定的地址空间&#xff0c;因此才会有诸如取地址&#xff0c;通过地址访问等操作&#xff0c;那…...

Python之爬虫

目录 HTTP请求HTTP响应获得页面响应伪装用户访问打包数据爬取豆瓣top250 HTTP请求 HTTP&#xff1a;HypertextTransferProtcol 超文本传输协议 1、请求行 POST/user/info?new_usertrue HTTP/1.1#资源了路径user/info 查询参数new_usertrue 协议版本HTTP/1.1 2、请求头 Ho…...

打造自己的前端组件库(奶妈版,超详细)

打造自己的前端组件库 demo是开源的&#xff0c;自己上npm 或者 github 上都能搜到 新建vue项目(sass js vue2) vue create yt-ui 修改文件目录(如下) 修改&#xff1a; 1.src 更名 examples; 2. src/components移动到项目最外层&#xff1b;3.vue.config.js更改入口文件 /…...

6.调制阶数相关

1、调制阶数与峰均比的关系 调制阶数&#xff08;modulation order&#xff09;对峰均比&#xff08;有一定的影响。 峰均比是用于衡量调制信号或波形在幅度上的动态范围的指标。它表示信号的最大峰值与平均功率之间的比值。较高的峰均比可能导致信号在传输或放大过程中出现过…...

Maven多模块管理(转载)

注意&#xff1a;父模块需设定打包方式为pom https://cloud.tencent.com/developer/article/1667275 dependencyManagement 统一管理子类依赖版本 在父类maven中加入&#xff0c;不会继承给子类&#xff0c;只能规定子类的依赖版本&#xff0c;子类加入dependence后无需写入 …...

运维学习CentOS 7进行Nightingale二进制部署

.因为Nightingale需要MySQL保存一些数据&#xff0c;所以可以参考《CentOS 7.6使用mysql-8.0.31-1.el7.x86_64.rpm-bundle.tar安装Mysql 8.0》部署MySQL。 https://github.com/ccfos/nightingale/releases是可以github上下载Nightingale二进制安装包。 https://n9e.github.io/…...

ESTIMATE算法深度解析:从141个特征基因到肿瘤纯度,我们该如何解读它的结果?

ESTIMATE算法深度解析&#xff1a;从141个特征基因到肿瘤纯度&#xff0c;我们该如何解读它的结果&#xff1f; 肿瘤微环境&#xff08;TME&#xff09;的复杂性一直是癌症研究的核心挑战之一。当我们拿到一份肿瘤组织的RNA测序数据时&#xff0c;如何从海量的基因表达信息中抽…...

MBD_工具箱实战指南_02_从Simulink到AUTOSAR的嵌入式开发工具箱链

1. 从Simulink到AUTOSAR的工具箱链全景图 第一次接触MBD开发时&#xff0c;我被各种工具箱搞得晕头转向——Simulink画模型、Embedded Coder生成代码、AUTOSAR Components配置接口&#xff0c;每个工具单独用都能跑通&#xff0c;但连起来就各种报错。后来在量产项目中踩了无数…...

Windows PDF处理终极指南:Poppler零依赖工具包完全解析

Windows PDF处理终极指南&#xff1a;Poppler零依赖工具包完全解析 【免费下载链接】poppler-windows Download Poppler binaries packaged for Windows with dependencies 项目地址: https://gitcode.com/gh_mirrors/po/poppler-windows 还在为Windows系统上复杂的PDF处…...

2025届最火的六大AI论文网站推荐

Ai论文网站排名&#xff08;开题报告、文献综述、降aigc率、降重综合对比&#xff09; TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 基于先进深度学习算法构建的 AI 论文查重系统&#xff0c;能针对文本展开语义级精准比对&am…...

别再为电机供电发愁了!ESP12E电机拓展板与NodeMCU的电源配置详解(含L293D芯片分析)

ESP12E电机拓展板电源系统深度优化指南&#xff1a;从L293D芯片特性到实战供电方案 当你在机器人项目中使用NodeMCU配合ESP12E电机拓展板时&#xff0c;是否遇到过电机启动瞬间开发板重启、PWM信号不稳定或者L293D芯片异常发热的问题&#xff1f;这些现象背后往往隐藏着电源系统…...

从dbus-send到busctl:手把手教你迁移到更现代的D-Bus调试工具链

从dbus-send到busctl&#xff1a;现代D-Bus调试工具链迁移实战指南 如果你曾经在Linux系统中与D-Bus打交道&#xff0c;那么对dbus-send这个老牌命令行工具一定不陌生。它就像一把瑞士军刀&#xff0c;虽然功能全面但用起来总有些笨拙——复杂的参数构造、晦涩的输出格式、缺乏…...

FPGA点阵显示翻车实录:从“鬼影”到“闪烁”,我的16*16点阵调试避坑指南

FPGA点阵显示实战&#xff1a;从“鬼影”到“闪烁”的深度调试指南 第一次看到自己设计的16*16点阵屏亮起时&#xff0c;那种成就感难以言表——直到屏幕上开始出现诡异的残影和闪烁。作为一名FPGA开发者&#xff0c;你可能已经掌握了基础的点阵驱动原理&#xff0c;但真正让点…...

Steam创意工坊下载实践指南:WorkshopDL深度解析

Steam创意工坊下载实践指南&#xff1a;WorkshopDL深度解析 【免费下载链接】WorkshopDL WorkshopDL - The Best Steam Workshop Downloader 项目地址: https://gitcode.com/gh_mirrors/wo/WorkshopDL 你是否在GOG或Epic Games Store购买了游戏&#xff0c;却无法访问St…...

AI Agent的抗干扰能力:复杂环境下的决策稳定性设计

AI Agent的抗干扰能力:复杂环境下的决策稳定性设计 副标题:从理论到实践,构建鲁棒性强的智能体系统 第一部分:引言与基础 1. 摘要/引言 问题陈述:在现实世界的复杂环境中部署AI Agent时,我们常常面临一个令人头疼的挑战:环境干扰。这些干扰可能来自传感器噪声、不完美…...

深度解读20240320 功能更新(附完整操作教程)

很多商家做小程序商城&#xff0c;最头疼的就是20240320 功能更新的设置。一、为什么需要这个功能&#xff1f;很多做得好的小程序商城&#xff0c;都把20240320 功能更新用到了极致。二、适用场景以下场景特别适合使用20240320 功能更新&#xff1a;• 日常商城运营&#xff1…...