当前位置: 首页 > news >正文

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; }
http://www.zskr.cn/news/170585.html

相关文章:

  • YOLO模型冷启动DNS预解析:减少网络首次延迟
  • EMC的三大法宝②:接地(二)
  • YOLO目标检测全流程拆解:数据标注到GPU部署的每一步
  • 全国首批10城菁彩Vivid影厅启幕,《山河故人》重映见证影像新纪元
  • Linux 入门必掌握的十大命令
  • YOLO与Prometheus Thanos Ruler集成:跨集群告警规则
  • YOLO与Kubeflow MLOps集成:端到端机器学习 pipeline
  • 推荐阅读:深入解析C语言编程中的指针与内存管理
  • 事件委托(Event Delegation)
  • YOLO模型缓存一致性维护:主从同步与失效传播
  • 采样率、信号频谱/频谱混叠原理与matlab仿真分析
  • 构建LLM支持的AI Agent创新思维系统
  • 刻意练习 2.0:如何利用 AI 结对编程实现从“熟练工“到“大师“的进阶?
  • PHP反序列化
  • 年终复盘2.0:NLP自动萃取经验教训,构建可执行策略库
  • 推荐阅读:C语言中的指针与内存管理:构建高效系统的基石
  • YOLO模型冷启动JIT预热:触发热点代码编译机制
  • CF 做题记录(12月)
  • STUN协议:NAT穿透的核心技术与应用实践
  • InfiniBand 网络管理探秘:子网管理器如何发现硬件并分配网络地址
  • GEO贴牌代理赋能AI搜索推荐,让品牌在智能问答中优先展现 - 源码云科技
  • SDP协议:实时通信的会话描述基石
  • YOLO模型灰度发布完成后正式版替换流程
  • 母子定律,准到吓人
  • YOLO与Spinnaker部署平台集成:多环境渐进式发布
  • YOLO模型训练任务依赖管理:有向无环图调度实现
  • 在微网的世界里,电能共享是个大话题。今天咱们聊聊如何用非对称纳什谈判来优化多微网间的电能共享,顺便加点代码,让大家感受一下这个高级玩意儿
  • Abaqus复合材料微观单胞RVE模型的周期性网格划分及E11,E22,E33,G12,G13...
  • 计算机毕业设计Python+AI大模型新闻自动分类 新闻预测系统 新闻可视化 新闻爬虫 大数据毕业设计
  • YOLO模型灰度版本灰度结束后的用户通知