优先队列priority_queue应用

不讲概念!!只说用法!!!!!
优先队列 priority_queue 换种话来说就是堆,只可以从中取到最大或者最小的值,所以说,只维护堆顶。它使用less()作为比较函数,即元素的优先级按照从大到小的顺序排列。如果需要按照从小到大的顺序排列,可以使用greater()作为比较函数。也就是说,如果我要取最大值,那么我就不管(使用其默认的less),我要取最小值,那么就要使用greater()
上图:
在这里插入图片描述

#include<bits/stdc++.h>
using namespace std;
int main()
{priority_queue<int,vector<int>,greater<int>>pq;for(int i=0;i<5;i++){int x;cin>>x;pq.push(x);}while(!pq.empty()){cout<<pq.top()<<'\n';pq.pop();}return 0;} 

如果我们使用greater的话那么每次就会找到这个堆的最小值,我们可以用这个方法找出数组或者vector容器中的最大最小值,或者给数组或者容器排序。
如图:
最小值:
在这里插入图片描述
代码如下:

#include<bits/stdc++.h>
using namespace std;
int main()
{priority_queue<int,vector<int>,greater<int>>pq;priority_queue<int,vector<int>,greater<int>>pq2;int n;cin>>n;//代表初始数组的大小 int arr[n];vector<int>v;//给数组赋值 for(int i=0;i<n;i++){cin>>arr[i];pq.push(arr[i]);}
//---------------------------------------------------------------------------//给vector赋值 for(int i=0;i<n;i++){int x;cin>>x;v.push_back(x);pq2.push(v[i]);}//---------------------------------------------------------------------------//通过优先队列找出数组中的最小值int min1=pq.top(),min2=pq2.top();cout<<min1<<" "<<min2<<'\n';return 0;} 

最大值:
在这里插入图片描述
代码如下:

#include<bits/stdc++.h>
using namespace std;
int main()
{priority_queue<int,vector<int>,less<int>>pq;priority_queue<int,vector<int>,less<int>>pq2;int n;cin>>n;//代表初始数组的大小 int arr[n];vector<int>v;//给数组赋值 for(int i=0;i<n;i++){cin>>arr[i];pq.push(arr[i]);}
//---------------------------------------------------------------------------//给vector赋值 for(int i=0;i<n;i++){int x;cin>>x;v.push_back(x);pq2.push(v[i]);}//---------------------------------------------------------------------------//通过优先队列找出数组中的最大值int max1=pq.top(),max2=pq2.top();cout<<max1<<" "<<max2<<'\n';return 0;} 

排序(由大到小):在这里插入图片描述
代码:

#include<bits/stdc++.h>
using namespace std;
int main()
{priority_queue<int,vector<int>,greater<int>>pq;priority_queue<int,vector<int>,greater<int>>pq2;int n;cin>>n;//代表初始数组的大小 int arr[n];vector<int>v;//给数组赋值 for(int i=0;i<n;i++){cin>>arr[i];pq.push(arr[i]);}
//---------------------------------------------------------------------------//给vector赋值 for(int i=0;i<n;i++){int x;cin>>x;v.push_back(x);pq2.push(v[i]);}//---------------------------------------------------------------------------//排序vector<int>r1,r2;while(!pq.empty()){r1.push_back(pq.top());pq.pop();}cout<<"r1:";for(auto &e : r1) cout<<e<<" ";cout<<'\n';while(!pq2.empty()){r2.push_back(pq2.top());pq2.pop();}cout<<"r2:";for(auto &e : r2) cout<<e<<" ";cout<<'\n';return 0;} 

排序(由大到小):
在这里插入图片描述
代码:

#include<bits/stdc++.h>
using namespace std;
int main()
{priority_queue<int,vector<int>,less<int>>pq;priority_queue<int,vector<int>,less<int>>pq2;int n;cin>>n;//代表初始数组的大小 int arr[n];vector<int>v;//给数组赋值 for(int i=0;i<n;i++){cin>>arr[i];pq.push(arr[i]);}
//---------------------------------------------------------------------------//给vector赋值 for(int i=0;i<n;i++){int x;cin>>x;v.push_back(x);pq2.push(v[i]);}//---------------------------------------------------------------------------//排序vector<int>r1,r2;while(!pq.empty()){r1.push_back(pq.top());pq.pop();}cout<<"r1:";for(auto &e : r1) cout<<e<<" ";cout<<'\n';while(!pq2.empty()){r2.push_back(pq2.top());pq2.pop();}cout<<"r2:";for(auto &e : r2) cout<<e<<" ";cout<<'\n';return 0;} 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/29600.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

鸿蒙Android4个脚有脚线

效果 min:number122max:number150Row(){Stack(){// 底Text().border({width:2,color:$r(app.color.yellow)}).height(this.max).aspectRatio(1)// 长Text().backgroundColor($r(app.color.white)).height(this.max).width(this.min)// 宽Text().backgroundColor($r(app.color.w…

2025年总结zabbix手动部署过程!

1.下载软件包。 wget https://repo.zabbix.com/zabbix/6.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_latest_6.0ubuntu22.04_all.deb dpkg -i zabbix-release_latest_6.0ubuntu22.04_all.deb apt update apt install zabbix-server-mysql zabbix-frontend-php zabbix…

3.3.2 用仿真图实现点灯效果

文章目录 文章介绍Keil生成.hex代码Proteus仿真图中导入.hex代码文件开始仿真 文章介绍 点灯之前需要准备好仿真图keil代码 仿真图参考前文&#xff1a;3.3.2 Proteus第一个仿真图 keil安装参考前文&#xff1a;3.1.2 Keil4安装教程 keil新建第一个项目参考前文&#xff1a;3.1…

TypeError: Cannot read properties of undefined (reading ‘xxx‘)

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》、《前端求职突破计划》 &#x1f35a; 蓝桥云课签约作者、…

Spring 无法解决循环依赖的 5 种场景

一、构造器注入引发的循环依赖 1. 问题复现 Component public class ServiceA {private final ServiceB serviceB;Autowiredpublic ServiceA(ServiceB serviceB) { // 构造器注入this.serviceB serviceB;} }Component public class ServiceB {private final ServiceA servic…

Vue项目通过内嵌iframe访问另一个vue页面,获取token适配后端鉴权(以内嵌若依项目举例)

1. 改造子Vue项目进行适配(ruoyi举例) (1) 在路由文件添加需要被外链的vue页面配置 // 若依项目的话是 router/index.js文件 {path: /contrast,component: () > import(/views/contrast/index),hidden: true },(2) 开放白名单 // 若依项目的话是 permission.js 文件 cons…

案例1_2:点亮8个灯【改进版】

文章目录 文章介绍改进的原理图改进的代码效果图 文章介绍 改进的原理图 使用标号简化连线 改进的代码 #include <reg51.h> // 包含头文件void main() {// 让 LED1-LED4 低电平&#xff08;点亮&#xff09;// P0 1111 0000;P0 0xF0;while (1); // 让程序一直运行…

Bazel搭建CUDA工程入门

环境版本&#xff1a; 工程目录&#xff1a; 测试输出&#xff1a; WORKSPACE 参考仓库&#xff1a;CUDA rules for Bazel 及 examples load("bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")http_archive(name "rules_cuda…

深入理解 C 语言函数的定义

在 C 语言的编程世界里&#xff0c;函数是构建复杂程序的基石。理解函数的定义与运用&#xff0c;对于编写高效、可维护的代码至关重要。​ 函数定义的基本概念​ 函数是一组执行特定任务的代码块。它将一个复杂的问题分解为一个个小的、可管理的部分&#xff0c;提高了代码的…

从毕达哥拉斯定理到向量距离和夹角的计算

1 毕达哥拉斯定理和余弦定理 1.1 毕达哥拉斯定理&#xff08;勾股定理&#xff09; 对于 毕达哥拉斯定理&#xff08;勾股定理&#xff09; 大家应该都比较熟悉&#xff0c;在一个直角三角形中&#xff0c;两条 直角边的平方之和 等于 斜边的平方 例如一个直角三角形两个直角…

结合rpart包的决策树介绍

决策树与CART算法 决策树是一种基于树状结构的监督学习算法。它通过从根节点开始递归地对特征进行划分&#xff0c;构建出一棵树来进行决策。决策树的构建过程需要解决的重要问题有三个&#xff1a;如何选择自变量、如何选择分割点、确定停止划分的条件。解决这些问题是希望随…

Manus AI : Agent 元年开启.pdf

Manus AI : Agent 元年开启.pdf 是由华泰证券出品的一份调研报告&#xff0c;共计23页。报告详细介绍了Manus AI 及 Agent&#xff0c;主要包括Manus AI 的功能、优势、技术能力&#xff0c;Agent 的概念、架构、应用场景&#xff0c;以及 AI Agent 的类型和相关案例&#xff0…

Centos的ElasticSearch安装教程

由于我们是用于校园学习&#xff0c;所以最好是关闭防火墙 systemctl stop firewalld systemctl disable firewalld 个人喜欢安装在opt临时目录&#xff0c;大家可以随意 在opt目录下创建一个es-standonely-docker目录 mkdir es-standonely-docker 进入目录编辑yml文件 se…

Geo3D建筑材质切换+屋顶纹理

一、简介 基于Threejs开发封装建筑渲染管线&#xff0c;利用简单二维建筑矢量面轮廓程序化生成3D建筑&#xff0c;支持材质一键切换&#xff0c;支持多样化建筑墙面材质和屋顶材质&#xff0c;支持建筑透明&#xff0c;支持地形高程适配&#xff0c;支持按空间范围裁剪挖洞等。…

【移动WEB开发】流式布局

目录 1. 移动端基础 1.1 浏览器现状 1.2 手机屏幕现状 1.3 常见移动端屏幕尺寸 1.4 移动端调试方法 2. 视口 3. 二倍图 3.1 物理像素&物理像素比 3.2 多倍图 3.3 背景缩放 3.4 多倍图切图cutterman 4. 移动端开发选择 4.1 主流方案 4.2 单独制作 4.3 响应式…

江科大51单片机笔记【9】DS1302时钟可调时钟(下)

在写代码前&#xff0c;记得把上一节的跳线帽给插回去&#xff0c;不然LCD无法显示 一.DS1302时钟 1.编写DS1302.c文件 &#xff08;1&#xff09;重新对端口定义名字 sbit DS1302_SCLKP3^6; sbit DS1302_IOP3^4; sbit DS1302_CEP3^5;&#xff08;2&#xff09;初始化 因为…

发行思考:全球热销榜的频繁变动

几点杂感&#xff1a; 1、单机游戏销量与在线人数的衰退是剧烈的&#xff0c;有明显的周期性&#xff0c;而在线游戏则稳定很多。 如去年的某明星游戏&#xff0c;最高200多万在线&#xff0c;如今在线人数是48名&#xff0c;3万多。 而近期热门的是MH&#xff0c;在线人数8…

PDF处理控件Aspose.PDF,如何实现企业级PDF处理

PDF处理为何成为开发者的“隐形雷区”&#xff1f; “手动调整200页PDF目录耗时3天&#xff0c;扫描件文字识别错误导致数据混乱&#xff0c;跨平台渲染格式崩坏引发客户投诉……” 作为开发者&#xff0c;你是否也在为PDF处理的复杂细节消耗大量精力&#xff1f;Aspose.PDF凭…

ubuntu22.04机器人开发环境配置

1. ros2环境配置&#xff08;humble&#xff09; #配置源 # https://docs.ros.org/en/humble/Installation/Ubuntu-Install-Debs.html sudo apt install software-properties-common sudo add-apt-repository universe sudo apt update && sudo apt install curl -y# …

期权帮|中证1000股指期权交割结算价怎么算?

期权帮锦鲤三三每日分享期权知识&#xff0c;帮助期权新手及时有效地掌握即市趋势与新资讯&#xff01; 中证1000股指期权交割结算价怎么算&#xff1f; 一、按照最后交易日结算价&#xff1a; &#xff08;1&#xff09;计算方法&#xff1a;最后交易日标的指数&#xff08…