【蓝桥备赛】优先队列

news/2024/7/7 22:08:56

优先队列

队列是基于数组或者链表来实现的,是线性的结构;队列的特点是先进先出。

优先队列是一种特殊类型的队列,其中元素被赋予优先级,具有较高优先级的元素先被处理。

在竞赛中经常会遇到优先队列的思想

基本语法

基本语法

定义优先队列

#include <queue>
using namespace std;

// 定义一个最大堆(默认)
priority_queue<int> maxHeap;

// 定义一个最小堆
priority_queue<int, vector<int>, greater<int>> minHeap;

插入元素

maxHeap.push(10);
maxHeap.push(5);

获取栈顶的元素

int topElement = maxHeap.top();

弹出栈顶的元素

maxHeap.pop();

获取队列的大小

int size = maxHeap.size();

判断队列是否为空

bool isEmpty = maxHeap.empty();

优先队列的底层实现通常是通过堆(heap)来实现的,堆可以是最大堆或最小堆,具体取决于比较函数。最大堆是默认的实现,如果想要最小堆,则需要提供比较函数 greater。

题目

[NOIP2004]合并果子
每次都要选选出序列中最小的两个,也可以进行排序,然后每次再添加进来,但是使用优先队列更加的方便,简单。

代码

#include <bits/stdc++.h>
using namespace std;
int n;

int main()
{
  priority_queue<int, vector<int>, greater<int>> queue;
  cin >> n;
  for (int i = 1; i <= n; i++)
  {
    int x;
    cin >> x;
    queue.push(x);
  }
  int sum = 0;
  while (queue.size())
  {
    int a = queue.top();
    queue.pop();
    int b = queue.top();
    queue.pop();
    int cost = +b;
    sum = sum + cost;
    queue.push(cost);
  }
  cout << sum;
}

http://lihuaxi.xjx100.cn/news/2006425.html

相关文章

python封装的.exe文件是如何在cmd中获取.xml路径的?

这段日子搞项目算法封装&#xff0c;愁死我。来回改了三遍&#xff0c;总算把相对路径、绝对路径&#xff0c;还有cmd给.exe传参的方式搞懂了。 主要是这个语句 workspace sys.argv[1] sys.argv[]的作用就是,在运行python文件的时候从外部输入参数往文件里面传递参数。 外部就…

linux+rv1126/imx6ull:opencv静态库交叉编译

目录 1.下载 2.准备工作 2.1安装依赖环境 2.2安装Cmake 2.3 解压opencv 3.Cmake设置 3.1文件夹选择 1&#xff09;进入源码根目录 2&#xff09;运行cmake 3&#xff09;选择目录 4&#xff09;进入配置界面 5&#xff09;查找编译器 6&#xff09;配置编译器 3.…

TCP 连接掉线自动重连

文章目录 TCP 连接掉线自动重连定义使用连接效果 TCP 接收数据时防止掉线。TCP 连接掉线自动重连。多线程环境下TCP掉线自动重连。 欢迎讨论更好的方法&#xff01; TCP 连接掉线自动重连 定义 定义一个类&#xff0c;以编写TCP连接函数Connect()&#xff0c;并且&#xff1a…

python实现的LDA算法

实现LDA算法需要用到一些数学和概率统计的知识&#xff0c;你需要根据LDA算法的具体公式&#xff0c;实现初始化模型参数、Gibbs采样、模型参数更新等具体的步骤。同时&#xff0c;还需要读取训练文件和词典文件&#xff0c;以及保存模型到文件的功能。 理解LDA算法的实现思路…

2024年美赛C题:Momentum in Tennis思路解析

Problem C: Momentum in Tennis 网球运动中的动力 【扫描下方二维码加入群聊&#xff0c;了解更多思路~】 中文题目&#xff1a; 在2023年温布尔登男子单打决赛中&#xff0c;20岁的西班牙新星卡洛斯阿尔卡拉斯击败了36岁的诺瓦克德约科维奇。这是德约科维奇自2013年以来在温布…

Leetcode刷题150. 逆波兰表达式求值

给你一个字符串数组 tokens &#xff0c;表示一个根据 逆波兰表示法 表示的算术表达式。 请你计算该表达式。返回一个表示表达式值的整数。 注意&#xff1a; 有效的算符为 、-、* 和 / 。每个操作数&#xff08;运算对象&#xff09;都可以是一个整数或者另一个表达式。两个…

时空数据挖掘新思路!25篇顶会论文汇总,含2024最新!

在科技飞速发展的今天&#xff0c;我们正处在一个大数据无处不在的时代&#xff0c;在这个时代背景下&#xff0c;时空数据变得尤为重要&#xff0c;它不仅记录了事物的位置和时间变化&#xff0c;还揭示了地理实体间的复杂联系和动态模式。 为了充分挖掘这些数据的潜在价值&am…

详细分析Java中的Minio类各API(附win配置安装)(全)

目录 前言1. Window配置2. 存储桶的基本方法3. 存储对象的基本方法3.1 上传对象3.1.1 putObject3.1.2 uploadObject 3.2 操作对象3.2.1 getPresignedObjectUrl3.2.2 getPresignedPostFormData3.2.3 listObjects3.2.4 copyObject3.2.5 downloadObject3.2.6 removeObject3.2.7 re…