news 2026/4/3 1:51:37

csp信奥赛C++标准模板库STL案例应用18

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
csp信奥赛C++标准模板库STL案例应用18

csp信奥赛C++标准模板库STL案例应用18

priority_queue实践

题目描述

给定一个数列,初始为空,请支持下面三种操作:

  1. 给定一个整数x xx,请将x xx加入到数列中。
  2. 输出数列中最小的数。
  3. 删除数列中最小的数(如果有多个数最小,只删除1 11个)。
输入格式

第一行是一个整数,表示操作的次数n nn
接下来n nn行,每行表示一次操作。每行首先有一个整数o p opop表示操作类型。

  • o p = 1 op = 1op=1,则后面有一个整数x xx,表示要将x xx加入数列。
  • o p = 2 op = 2op=2,则表示要求输出数列中的最小数。
  • o p = 3 op = 3op=3,则表示删除数列中的最小数。如果有多个数最小,只删除1 11个。
输出格式

对于每个操作2 22,输出一行一个整数表示答案。

输入输出样例 1
输入 1
5 1 2 1 5 2 3 2
输出 1
2 5
【数据规模与约定】
  • 对于30 % 30\%30%的数据,保证n ≤ 15 n \leq 15n15
  • 对于70 % 70\%70%的数据,保证n ≤ 10 4 n \leq 10^4n104
  • 对于100 % 100\%100%的数据,保证1 ≤ n ≤ 10 6 1 \leq n \leq 10^61n1061 ≤ x < 2 31 1 \leq x \lt 2^{31}1x<231o p ∈ { 1 , 2 , 3 } op \in \{1, 2, 3\}op{1,2,3}

思路分析

这是一个标准的**最小堆(小根堆)**实现问题。题目要求维护一个动态数列,支持三种操作:

  1. 插入元素
  2. 查询最小元素
  3. 删除最小元素

这种需求刚好可以用优先队列(堆)数据结构来实现。由于C++ STL中的priority_queue默认是大根堆,我们需要通过指定比较函数greater<int>来将其转换为小根堆

代码实现

#include<bits/stdc++.h>usingnamespacestd;intn,op,x;// 定义小根堆:使用优先队列,第三个参数 greater<int> 表示较小的元素优先级更高priority_queue<int,vector<int>,greater<int>>pq;intmain(){// 读入操作次数cin>>n;// 处理n次操作while(n--){cin>>op;// 读入操作类型if(op==1){// 操作1:插入元素cin>>x;// 读入要插入的值pq.push(x);// 将x压入小根堆}elseif(op==2){// 操作2:查询最小值// 输出堆顶元素(即最小值)cout<<pq.top()<<endl;}else{// 操作3:删除最小值pq.pop();// 弹出堆顶元素(即最小值)}}return0;}

功能分析

1.数据结构选择
  • 使用priority_queue<int, vector<int>, greater<int>>实现小根堆
  • greater<int>比较器使得较小的整数具有更高的优先级
  • 堆的插入、删除、查询操作时间复杂度都是O(log n)
2.时间复杂度
  • 操作1(插入):O(log n),堆的插入操作
  • 操作2(查询最小值):O(1),直接访问堆顶
  • 操作3(删除最小值):O(log n),弹出堆顶后需要调整堆结构
  • 总体:对于n ≤ 10⁶的数据规模,O(n log n)的复杂度可以接受
3.空间复杂度
  • O(n),需要存储所有插入的元素
4.算法优势
  1. 高效:堆的插入和删除操作都只需要O(log n)时间
  2. 简洁:利用STL库,代码非常简洁
  3. 正确:保证了每次都能快速获取和删除最小值

完整系列资料,请查看专栏:《csp信奥赛C++标准模板库STL》
https://blog.csdn.net/weixin_66461496/category_13108077.html

各种学习资料,助力大家一站式学习和提升!!!

#include<bits/stdc++.h>usingnamespacestd;intmain(){cout<<"########## 一站式掌握信奥赛知识! ##########";cout<<"############# 冲刺信奥赛拿奖! #############";cout<<"###### 课程购买后永久学习,不受限制! ######";return0;}
  • 一、CSP信奥赛C++通关学习视频课:
    • C++语法基础
    • C++语法进阶
    • C++算法
    • C++数据结构
    • CSP信奥赛数学
    • CSP信奥赛STL
  • 二、CSP信奥赛C++竞赛拿奖视频课:
    • 信奥赛csp-j初赛高频考点解析
    • CSP信奥赛C++复赛集训课(12大高频考点专题集训)
  • 三、考级、竞赛刷题题单及题解:
    • GESP C++考级真题题解
    • CSP信奥赛C++初赛及复赛高频考点真题解析
    • CSP信奥赛C++一等奖通关刷题题单及题解

详细内容:

1、csp/信奥赛C++,完整信奥赛系列课程(永久学习):

https://edu.csdn.net/lecturer/7901 点击跳转


2、CSP信奥赛C++竞赛拿奖视频课:

https://edu.csdn.net/course/detail/40437 点击跳转

3、csp信奥赛冲刺一等奖有效刷题题解:

CSP信奥赛C++初赛及复赛高频考点真题解析(持续更新):https://blog.csdn.net/weixin_66461496/category_12808781.html 点击跳转

  • 2025 csp-j 复赛真题及答案解析(最新更新)
  • 2025 csp-x(山东) 复赛真题及答案解析(最新更新)
  • 2025 csp-x(河南) 复赛真题及答案解析(最新更新)
  • 2025 csp-x(辽宁) 复赛真题及答案解析(最新更新)
  • 2025 csp-x(江西) 复赛真题及答案解析(最新更新)
  • 2025 csp-x(广西) 复赛真题及答案解析(最新更新)
  • 2020 ~ 2024 csp 复赛真题题单及题解
  • 2019 ~ 2022 csp-j 初赛高频考点真题分类解析
  • 2021 ~ 2024 csp-s 初赛高频考点解析
  • 2023 ~ 2024 csp-x (山东)初赛真题及答案解析
  • 2024 csp-j 初赛真题及答案解析
  • 2025 csp-j 初赛真题及答案解析(最新更新)
  • 2025 csp-s 初赛真题及答案解析(最新更新)
  • 2025 csp-x (山东)初赛真题及答案解析(最新更新)
  • 2025 csp-x (江西)初赛真题及答案解析(最新更新)
  • 2025 csp-x (辽宁)初赛真题及答案解析(最新更新)

CSP信奥赛C++一等奖通关刷题题单及题解(持续更新):https://blog.csdn.net/weixin_66461496/category_12673810.html 点击跳转

  • 129 道刷题练习和详细题解,涉及:模拟算法、数学思维、二分算法、 前缀和、差分、深搜、广搜、DP专题、 树和图

4、GESP C++考级真题题解:

GESP(C++ 一级+二级+三级)真题题解(持续更新):https://blog.csdn.net/weixin_66461496/category_12858102.html 点击跳转

GESP(C++ 四级+五级+六级)真题题解(持续更新):https://blog.csdn.net/weixin_66461496/category_12869848.html 点击跳转

· 文末祝福 ·

#include<bits/stdc++.h>usingnamespacestd;intmain(){cout<<"跟着王老师一起学习信奥赛C++";cout<<" 成就更好的自己! ";cout<<" csp信奥赛一等奖属于你! ";return0;}
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/17 2:56:04

Zenodo科研数据管理:如何用开源平台构建个人学术知识库

Zenodo科研数据管理&#xff1a;如何用开源平台构建个人学术知识库 【免费下载链接】zenodo Research. Shared. 项目地址: https://gitcode.com/gh_mirrors/ze/zenodo 还在为科研成果的长期保存和有效分享而烦恼吗&#xff1f;Zenodo作为欧洲核子研究组织&#xff08;CE…

作者头像 李华
网站建设 2026/4/2 9:02:13

Speechless:你的微博记忆守护者,3步实现永久数字内容备份

Speechless&#xff1a;你的微博记忆守护者&#xff0c;3步实现永久数字内容备份 【免费下载链接】Speechless 把新浪微博的内容&#xff0c;导出成 PDF 文件进行备份的 Chrome Extension。 项目地址: https://gitcode.com/gh_mirrors/sp/Speechless 你是否曾经担心过&a…

作者头像 李华
网站建设 2026/3/25 9:57:29

NomNom终极指南:快速解决《无人深空》存档编辑难题

NomNom终极指南&#xff1a;快速解决《无人深空》存档编辑难题 【免费下载链接】NomNom NomNom is the most complete savegame editor for NMS but also shows additional information around the data youre about to change. You can also easily look up each item individ…

作者头像 李华
网站建设 2026/4/1 4:16:15

AMD GPU CUDA兼容终极方案:完整指南

还在为NVIDIA显卡的昂贵价格而苦恼吗&#xff1f;想不想让你的AMD GPU也能运行那些原本只能在CUDA环境下工作的应用程序&#xff1f;ZLUDA项目正是为此而生&#xff0c;它让AMD显卡用户也能享受到CUDA生态的便利。本文将为你全面解析如何在AMD硬件上搭建CUDA应用运行环境&#…

作者头像 李华
网站建设 2026/3/29 4:47:04

PaddlePaddle自动化流水线CI/CD构建思路

PaddlePaddle自动化流水线CI/CD构建思路 在AI模型从实验室走向生产环境的今天&#xff0c;许多团队仍面临“训练能跑&#xff0c;上线就崩”的窘境。一个OCR模型在本地调试完美&#xff0c;部署到服务器后却因CUDA版本不匹配导致推理失败&#xff1b;一次看似微小的代码提交&am…

作者头像 李华