news 2026/9/3 2:11:42

STL专项:priority_queue 优先队列(堆)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
STL专项:priority_queue 优先队列(堆)

priority_queue

优先队列,也叫"",仅维护最大/最小元素,可以在较小的时间复杂度内获取某个元素集合的最大或最小值

优先队列常用于贪心、优化dp、构造、dijkstra、prim等问题或算法中,应用非常广泛

声明

//默认为大根堆

priority_queue<int> pq;

//改为小根堆

priority_queue<int,vector<int>,greater<int>> pq;

//比较复杂的结构,比如说pair和结构体等时使用自定义函数

//自定义比较函数常用方法

//方法一:全局函数,传入函数指针用decltype转换

bool cmp(const int &u,const int &v){

return u<u;

}

priority_queue<int, vector<int>,decltype(&cmp)> pq(cmp);

//方法二:匿名函数用cmp变量存储,传入变量

auto cmp = [](const int &u, const int &v){

return u<v;//大根堆

};

priority_queue<int,vector<int>,decltype(cmp)> pq(cmp);

//方法三:struct重载()运算符

struct cmp{

bool operator()(const int &u, const int &v){

return u<v;//大根堆

}

}

priority_queue<int,vector<int>,cmp> pq;

常规操作

//取出堆顶元素,时间复杂度为O(1)

cout << pq.top() << '\n';

//入堆,O(logn),n为堆内元素个数

pq.push(x);

//出堆,O(logn),n为堆内元素个数

pq.pop(); //注意保证pq非空

//获取堆内元素个数,即堆的大小

cout << pq.size() << '\n';

优先队列为树形结构,不支持遍历(除非逐个出堆)

小e吃松果

小e吃松果 | 星码StarryCoding 算法竞赛新手村

代码

#include<bits/stdc++.h> using namespace std; using ll = long long; int main(){ int n;cin>>n; priority_queue<ll,vector<ll>,greater<ll>> pq; for(int i=1;i<=n;i++){ ll x;cin>>x; pq.push(x); } ll ans=0; while(pq.size()>1){ ll x=pq.top();pq.pop(); ll y=pq.top();pq.pop(); ans+=x+y; pq.push(x+y); } cout << ans <<endl; return 0; }
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/1 20:25:39

YOLO模型如何实现端到端高速检测?技术博客深度剖析

YOLO模型如何实现端到端高速检测&#xff1f;技术博客深度剖析 在智能制造工厂的高速流水线上&#xff0c;每秒有上百个工件经过视觉检测站。系统必须在30毫秒内完成图像采集、缺陷识别与剔除决策——任何延迟都会导致漏检或误判&#xff0c;直接造成经济损失。面对这种“既要快…

作者头像 李华
网站建设 2026/9/2 23:30:33

【花雕学编程】Arduino BLDC 之PID 控制实现精准位置跟踪

Arduino&#xff08;特别是经典的AVR系列如Uno/Nano&#xff09;的硬件资源&#xff08;CPU主频、RAM、Flash、ADC精度、定时器精度、中断响应抖动&#xff09;对于实现高性能的实时PID控制来说&#xff0c;存在显著的硬件瓶颈。因此&#xff0c;“Arduino BLDC PID精准位置跟踪…

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

【python大数据毕设实战】音乐内容智能推荐与市场趋势分析系统、Hadoop、计算机毕业设计、包括数据爬取、数据分析、数据可视化、机器学习、实战教学

&#x1f34a;作者&#xff1a;计算机毕设匠心工作室 &#x1f34a;简介&#xff1a;毕业后就一直专业从事计算机软件程序开发&#xff0c;至今也有8年工作经验。擅长Java、Python、微信小程序、安卓、大数据、PHP、.NET|C#、Golang等。 擅长&#xff1a;按照需求定制化开发项目…

作者头像 李华
网站建设 2026/9/2 23:03:56

母子定律,准到吓人

妈妈爱干饭&#xff0c;孩子抢饭碗&#xff08;吃饭速度堪比小旋风&#xff09;妈妈爱唠嗑&#xff0c;孩子话不断&#xff08;小嘴叭叭停不下来&#xff09;妈妈爱追剧&#xff0c;孩子当剧迷&#xff08;跟着妈妈哭哭笑笑&#xff09;妈妈爱整洁&#xff0c;孩子瞎忙活&#…

作者头像 李华
网站建设 2026/9/2 1:12:21

YOLO模型缓存穿透防护:布隆过滤器的实际应用

YOLO模型缓存穿透防护&#xff1a;布隆过滤器的实际应用 在智能制造工厂的边缘计算节点上&#xff0c;每天有成千上万的视觉检测设备从私有镜像仓库拉取YOLO模型。某天凌晨&#xff0c;运维团队突然收到告警&#xff1a;中心存储系统负载飙升至95%&#xff0c;大量docker pull…

作者头像 李华