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

AcWing 839:模拟堆 ← multiset + unordered_map

【题目来源】
https://www.acwing.com/problem/content/841/

【题目描述】
维护一个集合,初始时集合为空,支持如下几种操作:
1. I x,插入一个数 x;
2. PM,输出当前集合中的最小值;
3. DM,删除当前集合中的最小值(数据保证此时的最小值唯一);
4. D k,删除第 k 个插入的数;
5. C k x,修改第 k 个插入的数,将其变为 x;
现在要进行 N 次操作,对于所有第 2 个操作,输出当前集合的最小值。

【输入格式】
第一行包含整数 N。
接下来 N 行,每行包含一个操作指令,操作指令为 I x,PM,DM,D k 或 C k x 中的一种。

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

【数据范围】
1≤N≤10^5 
−10^9≤x≤10^9
数据保证合法。

【输入样例】
8
I -10
PM
I -10
D 1
C 2 8
I 6
PM
DM

【输出样例】
-10
6

【算法分析】
● 堆是一棵完全二叉树。
● unordered_map:https://blog.csdn.net/hnjzsyjyj/article/details/131628676
● multiset:
https://cplusplus.com/reference/set/multiset/
● 本题的数组模拟实现参见:https://blog.csdn.net/hnjzsyjyj/article/details/146358448

【算法代码】

#include<bits/stdc++.h>
using namespace std;

multiset<int> h; //heap
unordered_map<int,int> a;
int n,k,x,tot;
string op;

int main() {
    cin>>n;
    while(n--) {
        cin>>op;
        if(op=="I") cin>>x, h.insert(x), a[++tot]=x;
        else if(op=="PM") cout<<*h.begin()<<endl;
        else if(op=="DM") h.erase(h.begin());
        else if(op=="D") cin>>k, h.erase(h.find(a[k]));
        else cin>>k>>x, h.erase(h.find(a[k])), h.insert(a[k]=x);
    }
}

/*
in:
8
I -10
PM
I -10
D 1
C 2 8
I 6
PM
DM

out:
-10
6
*/



【参考文献】
https://www.acwing.com/solution/content/156923/
https://www.cnblogs.com/ddja/p/15898586.html
https://www.acwing.com/solution/content/6100/
https://www.acwing.com/solution/content/5541/
https://www.cnblogs.com/Hayasaka/p/14294147.html




 


 

相关文章:

  • 4.玩转热图(续:矩阵式网络关系热图、Pivot Table 热图、三维/交互式热图)——Python数据挖掘代码实践
  • 2025年优化算法:人工旅鼠算法(Artificial lemming algorithm,ALA)
  • Devops之Docker:Docker入门
  • Pandas数据分析
  • 深入解析 Service Worker 在 Chrome 扩展中的应用
  • redis,tar.gz安装后,接入systemctl报错解决
  • ESP32 BLE 初步学习笔记
  • 嵌入式C语言进阶(四)指针
  • NO.51十六届蓝桥杯备战|堆算法题|第k小|除2|最小函数值|序列合并|舞蹈课(C++)
  • CAN通信转TCP/IP通信协议解析
  • 蓝桥杯关于栈这个数据结构的一个算法题目
  • 【自学笔记】NFT基础知识点总览-持续更新
  • ⭐算法OJ⭐二叉树的后序遍历【树的遍历】(C++实现)Binary Tree Postorder Traversal
  • Mysql-经典实战案例(4):XtraBackup+binlog恢复实战
  • Python 位运算符大全
  • 【架构】单体架构 vs 微服务架构:如何选择最适合你的技术方案?
  • 推荐HttpClient工具类
  • 2025.3.20总结
  • 暗光增强技术研究进展与产品落地综合分析(2023-2025)
  • dfs(二十二)78. 子集
  • 深一度|上座率连创纪录撬动文旅,中超可否复制大连模式
  • 上昆“学馆制”10年,完成300出折子戏和20台大戏传承
  • 山东发布高温橙警:预计19日至21日局地可达40℃
  • 聚焦中华文明精神标识,多校专家学者跨学科对话交流
  • 经济日报:人工智能开启太空经济新格局
  • 朱雀二号改进型遥二运载火箭发射成功