news 2026/4/17 22:31:31

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/4/17 19:42:10

大麦助手DamaiHelper:2025年演唱会抢票终极解决方案

还在为抢不到心仪演唱会门票而烦恼吗&#xff1f;DamaiHelper作为一款开源免费的抢票神器&#xff0c;通过智能自动化技术帮助你在热门演出中脱颖而出。这款基于Python开发的工具能够实现毫秒级响应&#xff0c;让你在票务竞争中占据绝对优势。 【免费下载链接】damaihelper 大…

作者头像 李华
网站建设 2026/4/17 1:38:36

如何快速解决PL2303兼容性问题:面向初学者的完整方案

如何快速解决PL2303兼容性问题&#xff1a;面向初学者的完整方案 【免费下载链接】pl2303-win10 Windows 10 driver for end-of-life PL-2303 chipsets. 项目地址: https://gitcode.com/gh_mirrors/pl/pl2303-win10 你是否曾经遇到过这样的困扰&#xff1a;从抽屉里翻出…

作者头像 李华
网站建设 2026/4/17 21:42:48

ZXPInstaller如何让Adobe扩展安装变得如此简单?

ZXPInstaller如何让Adobe扩展安装变得如此简单&#xff1f; 【免费下载链接】ZXPInstaller Open Source ZXP Installer for Adobe Extensions 项目地址: https://gitcode.com/gh_mirrors/zx/ZXPInstaller 你是否曾经为安装Adobe扩展文件而烦恼&#xff1f;当传统的Exten…

作者头像 李华
网站建设 2026/4/17 3:40:55

QQ截图工具终极指南:5分钟掌握高效截图技巧

QQ截图工具终极指南&#xff1a;5分钟掌握高效截图技巧 【免费下载链接】QQScreenShot 电脑QQ截图工具提取版,支持文字提取、图片识别、截长图、qq录屏。默认截图文件名为ScreenShot日期 项目地址: https://gitcode.com/gh_mirrors/qq/QQScreenShot 还在为截图效率低下而…

作者头像 李华
网站建设 2026/4/17 5:34:11

LOL云顶之弈全自动刷经验工具终极指南:新手也能快速上手的完整教程

LOL-Yun-Ding-Zhi-Yi是一款专为英雄联盟云顶之弈模式设计的全自动挂机刷经验程序&#xff0c;能够智能模拟玩家操作&#xff0c;解放双手的同时高效获取游戏经验。无论你是技术新手还是资深玩家&#xff0c;都能通过本文快速掌握这款工具的使用方法。 【免费下载链接】LOL-Yun-…

作者头像 李华
网站建设 2026/4/17 20:26:14

Obsidian绘图插件终极指南:从新手到专家的完整教程

Obsidian绘图插件终极指南&#xff1a;从新手到专家的完整教程 【免费下载链接】drawio-obsidian Draw.io plugin for obsidian.md 项目地址: https://gitcode.com/gh_mirrors/dr/drawio-obsidian 还在为笔记缺乏直观的可视化表达而烦恼吗&#xff1f;当你的知识体系越…

作者头像 李华