IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> c++ priority_queue题解(爱思创) -> 正文阅读

[C++知识库]c++ priority_queue题解(爱思创)

前言:

这篇文章是为了帮助一些

像我这样的菜鸟

找到简单的题解

之前说了数据结构队列

本期我们来看一下优先队列

问题描述:

题目描述

依次读入?n?个整数 ai??,其中可能存在相同的元素。

对于每次读入的元素?ai?,如果它与前面剩余元素中的最小值相同时,则同时消除这?2?个元素,并输出此次消除操作之后剩余元素的最小值。如果该元素没有发生“消除”操作,则输出?None

特别地,在 “输出剩余元素的最小值” 时,如果没有剩余元素,则输出?-1 。

输入格式

第一行:n?(1≤n≤105)?。

第二行:n?个用空格隔开的整数?ai??(?109≤ai?≤109)?。

输出格式

输出共?n?行,每行一个操作结果。

样例输入

5
3 1 1 3 3

样例输出

None
None
3
-1
None

问题解析:

本题之需要了解优先队列

然后就非常简单了

优先队列的简介:

优先队列也是一种抽象数据类型。

优先队列中的每个元素都有优先级

而优先级高(或者低)的将会先出队,

而优先级相同的则按照其在优先队列中的顺序依次出队。

优先队列的函数:

优先队列函数
q.size();返回q里元素个数
q.empty();返回q是否为空,空则返回1,否则返回0
q.push(k);在q的末尾插入k
q.pop();删掉q的第一个元素
q.top();返回q的第一个元素

priority_queue队列:相关资料


重点:

优先队列定义

分大根堆和小根堆

priority_queue <int> q;
//也可以是是一个结构体
priority_queue <int,vector<int>,greater<int> > q;//从小到大
//不需要#include<vector>头文件
priority_queue <int,vector<int>,less<int> >q;//从大到小
//默认从大到小

题目代码:

先写完变量如题目

需优先队列

priority_queue<int, vector<int>,greater<int> > q;//从小到大
int n,a,i,x;//如题目

直接进入主函数

int main()
{
	cin>>n;
	while(n--)//这样写简单
	{
		cin>>x;//输入
		if(!q.empty() && x==q.top())//如果出现了一次
		{
			q.pop();//删掉两个数
			if(q.empty()) cout<<-1<<endl;//判断没有剩下的数
			else cout<<q.top()<<endl;//有剩下的数则输出
		}
		else//没出现过
		{
			q.push(x);//入队
			cout<<"None"<<endl;//没有变化
		}
	}
	return 0;
}

完整代码:

#include<bits/stdc++.h>
using namespace std;
priority_queue<int, vector<int>,greater<int> > q;//从小到大
int n,a,i,x;//如题目
int main()
{
	cin>>n;
	while(n--)//这样写简单
	{
		cin>>x;//输入
		if(!q.empty() && x==q.top())//如果出现了一次
		{
			q.pop();//删掉两个数
			if(q.empty()) cout<<-1<<endl;//判断没有剩下的数
			else cout<<q.top()<<endl;//有剩下的数则输出
		}
		else//没出现过
		{
			q.push(x);//入队
			cout<<"None"<<endl;//没有变化
		}
	}
	return 0;
}

题目测评:

?样例通过

成功AC??

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2022-07-04 22:37:15  更:2022-07-04 22:39:46 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 15:24:45-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码