news 2026/4/7 5:27:22

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/7 0:23:33

ImageGlass深度体验:重新定义你的图片浏览方式

ImageGlass深度体验&#xff1a;重新定义你的图片浏览方式 【免费下载链接】ImageGlass &#x1f3de; A lightweight, versatile image viewer 项目地址: https://gitcode.com/gh_mirrors/im/ImageGlass 还在为Windows自带图片查看器功能单一、启动缓慢而烦恼&#xff…

作者头像 李华
网站建设 2026/3/29 6:19:08

Cellpose-SAM终极入门指南:轻松掌握细胞分割技术

Cellpose-SAM终极入门指南&#xff1a;轻松掌握细胞分割技术 【免费下载链接】cellpose 项目地址: https://gitcode.com/gh_mirrors/ce/cellpose 在生物医学研究中&#xff0c;细胞分割是图像分析的基础环节。无论你是研究生、科研助理还是医学图像分析新手&#xff0c…

作者头像 李华
网站建设 2026/4/5 6:33:43

电力价格预测终极教程:epftoolbox完整应用方案

电力价格预测终极教程&#xff1a;epftoolbox完整应用方案 【免费下载链接】epftoolbox An open-access benchmark and toolbox for electricity price forecasting 项目地址: https://gitcode.com/gh_mirrors/ep/epftoolbox 电力价格预测是能源交易和电力市场分析的核心…

作者头像 李华
网站建设 2026/4/4 5:15:13

Kinovea终极指南:如何快速掌握专业运动分析技巧

Kinovea是一款功能强大的开源运动分析软件&#xff0c;专为体育教练、康复治疗师和运动爱好者设计。它能够通过视频捕捉、逐帧分析、动作对比和精确测量&#xff0c;帮助用户深入理解运动技术细节&#xff0c;为训练和评估提供数据支持。无论你是想要优化运动员的表现&#xff…

作者头像 李华
网站建设 2026/4/6 1:14:08

国家中小学智慧教育平台电子课本下载工具:3分钟快速上手全攻略

国家中小学智慧教育平台电子课本下载工具&#xff1a;3分钟快速上手全攻略 【免费下载链接】tchMaterial-parser 国家中小学智慧教育平台 电子课本下载工具 项目地址: https://gitcode.com/GitHub_Trending/tc/tchMaterial-parser 还在为寻找优质教育资源而烦恼吗&#…

作者头像 李华
网站建设 2026/3/31 0:01:31

终极VisualCppRedist AIO指南:告别Windows程序启动失败

终极VisualCppRedist AIO指南&#xff1a;告别Windows程序启动失败 【免费下载链接】vcredist AIO Repack for latest Microsoft Visual C Redistributable Runtimes 项目地址: https://gitcode.com/gh_mirrors/vc/vcredist 你是否曾经遇到过这样的情况&#xff1a;下载…

作者头像 李华