news 2026/4/18 5:01:16

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/4/15 17:01:12

YOLO模型训练资源使用趋势预测:基于历史数据分析

YOLO模型训练资源使用趋势预测&#xff1a;基于历史数据分析 在智能制造工厂的质检线上&#xff0c;一台AOI&#xff08;自动光学检测&#xff09;设备每秒拍摄数十张PCB板图像&#xff0c;系统必须在200毫秒内完成缺陷识别并决定是否停机。这样的高实时性要求背后&#xff0c;…

作者头像 李华
网站建设 2026/4/16 20:07:39

采样率、信号频谱/频谱混叠原理与matlab仿真分析

目录 1.采样率(fs​)与采样定理——奈奎斯特采样定理 2.信号的频谱分析 连续信号 离散信号 3.频谱混叠 1.采样率(fs​)与采样定理——奈奎斯特采样定理 采样率是指对连续模拟信号进行离散化时&#xff0c;每秒采集的样本点数&#xff0c;单位为Hz(赫兹&#xff0c;1Hz1个样…

作者头像 李华
网站建设 2026/4/17 22:37:27

《创业之路》-761-《架构思维:从程序员到CTO》第四部 - 架构师的职业规划与能力成长:从执行者到战略引领者的跃迁,技术、业务与软技能的三角支撑。

一、职业规划&#xff1a;从执行者到战略引领者的跃迁阶段划分与目标设定短期&#xff08;1-3年&#xff09;&#xff1a;夯实技术基础&#xff0c;掌握至少一门主流编程语言&#xff08;如Java、Python&#xff09;&#xff0c;熟悉分布式系统、微服务架构等设计理念&#xff…

作者头像 李华
网站建设 2026/4/18 0:25:18

YOLO模型冷启动JIT预热:触发热点代码编译机制

YOLO模型冷启动JIT预热&#xff1a;触发热点代码编译机制 在工业级AI推理系统中&#xff0c;一个看似微小却影响深远的问题正在悄然发生——当摄像头第一帧图像送入YOLO模型时&#xff0c;检测结果迟迟未出。延迟高达正常响应的数倍&#xff0c;甚至触发误报或漏检。这不是硬件…

作者头像 李华
网站建设 2026/4/18 0:23:19

YOLO模型灰度发布期间紧急问题响应机制

YOLO模型灰度发布期间紧急问题响应机制 在智能制造工厂的质检流水线上&#xff0c;一台边缘设备突然开始频繁误报“裂纹缺陷”&#xff0c;而同一产线的其他设备却运行正常。运维人员调取日志后发现&#xff0c;这台设备恰好是上周五灰度上线YOLOv10模型的测试节点——新版本因…

作者头像 李华