![](https://img-blog.csdnimg.cn/20190927151124774.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
队列
文章平均质量分 64
队列及其变体,如单调队列、优先队列等
hnjzsyjyj
这个作者很懒,什么都没留下…
展开
-
AcWing 1542:老鼠和大米 ← bfs+队列
● BFS算法助记:建-入-量:头-出:https://blog.csdn.net/hnjzsyjyj/article/details/125801217● DFS算法模板:https://blog.csdn.net/hnjzsyjyj/article/details/118736059原创 2024-07-13 23:12:48 · 415 阅读 · 0 评论 -
priority_queue元素为结构体时重载 operator< 的两种等价代码
STL priority_queue 具有“自动排序”的强大功能。其默认使用 operator< 的比较方式进行排序。 但是,对于自定义类型(如结构体、联合体、枚举等),则必须重载 operator< 比较方式。原创 2024-02-24 09:01:33 · 447 阅读 · 0 评论 -
POJ 3481、HDU 1908、AcWing 5125:双端队列 ← STL map
本文使用到 STL map,详见:https://cplusplus.com/reference/map/map/原创 2023-10-09 12:11:10 · 194 阅读 · 0 评论 -
POJ 3481:双端队列 ← 数组模拟
虽然本题来源于三个刷题网站:POJ 3481:http://poj.org/problem?id=3481HDU 1908:http://acm.hdu.edu.cn/showproblem.php?pid=1908AcWing 5128:https://www.acwing.com/problem/content/5128/但是,下文使用数组模拟的代码仅在 POJ 3481 上通过,而在 HDU 1908 及 AcWing 5128 上均超时。故可考虑使用 STL map 来实现。原创 2023-10-09 12:02:02 · 212 阅读 · 0 评论 -
AcWing 134:双端队列
双端队列:允许在两端进行插入和删除的线性表。输出受限的双端队列:允许在一端进行插入和删除,另一端进行插入的线性表。输入受限的双端队列:允许在一端进行插入和删除,另一端进行删除的线性表。原创 2023-11-04 10:38:40 · 109 阅读 · 0 评论 -
洛谷 P1638:逛画展 ← 单调队列
单调队列求最值时的进出队规则,可助记如下:★ 构建单调递减队列的目的在于求最大值,求最大值时的操作为“大覆盖,小附加”★ 构建单调递增队列的目的在于求最小值,求最小值时的操作为“小覆盖,大附加”原创 2023-10-08 20:49:39 · 280 阅读 · 0 评论 -
AcWing 829:模拟队列 ← 三种代码
本例给出了三种代码实现:1.利用 STL queue 实现队列的代码2.head=0、tail=0时,用数组模拟实现队列的代码3.head=0、tail=-1时,用数组模拟实现队列的代码原创 2023-10-07 13:47:41 · 144 阅读 · 1 评论 -
洛谷P5661:公交换乘 ← CSP-J 2019 复赛第2题
本题可以使用队列来模拟执行数学运算。原创 2023-09-24 09:08:31 · 220 阅读 · 0 评论 -
topK 问题 ← 优先队列
给定一个序列,找出序列中最大的K个数或者最小的K个数,称为topK问题。原创 2023-03-03 22:52:43 · 317 阅读 · 0 评论 -
队列的链式存储结构
此算法代码来源于严蔚敏编著的《数据结构(C语言版|第2版)》的随书代码。这个代码做了一点点微调,方便学习队列的链式存储结构。原创 2022-09-18 22:00:57 · 447 阅读 · 1 评论 -
利用队列解密QQ号码(三种方法)-->改编自《啊哈!算法》
新学期开始了,小哈是小哼的新同桌。小哼向小哈询问 QQ号,小哈当然不会直接告诉小哼啦,原因嘛你懂的。所以小哈给了小哼一串加密过的数字,同时小哈也告诉了小哼解密规则。规则是这样的:首先将第 1个数删除,紧接着将第2个数放到这串数的末尾,再将第3个数删除并将第4个数放到这串数的末尾,再将第5个数删除……直到剩下后一个数,将后一个数也删除。按照刚才删除的顺序,把这些删除的数连在一起就是小哈的QQ啦。现在你来帮帮小哼吧。小哈给小哼加密过的一串数是“6 3 1 7 5 8 9 2 4”。原创 2020-09-04 19:23:23 · 1197 阅读 · 0 评论 -
单调队列 → 常用于动态规划问题的优化
单调队列是指在队尾入队出队,在队首出队,且其元素具有单调性的特殊队列。其中,在队尾入队出队的操作是用来维护单调队列的单调性,在队首出队的操作是用来维护单调队列的大小。单调队列常用于动态规划问题的优化。★构建单调递减队列的目的在于求最大值,求最大值时的操作为“大覆盖,小附加”★构建单调递增队列的目的在于求最小值,求最小值时的操作为“小覆盖,大附加”......原创 2022-08-17 11:15:10 · 521 阅读 · 0 评论 -
滑动窗口(基于单调队列优化)→多重背包问题的队列优化
单调队列是指在队尾入队,在队尾及队首出队,且其元素具有单调性的特殊队列。因此,单调队列或者用数组模拟实现,或者用STL中的deque实现,不能用STL中的queue实现。滑动窗口在基于队列优化的多重背包问题中有应用。...............原创 2020-11-13 19:04:54 · 377 阅读 · 1 评论 -
洛谷P1168:中位数 ← 优先队列 对顶堆
【题目来源】https://www.luogu.com.cn/problem/P1168【问题描述】给出一个长度为的非负整数序列,对于所有,输出 的中位数。即前个数的中位数。【输入格式】第行为一个正整数,表示了序列长度。第 行包含个非负整数。【输出格式】共行,第行为的中位数。【算法代码】#include <bits/stdc++.h>using namespace std; priority_queue<int,vector<...原创 2022-05-28 14:02:15 · 291 阅读 · 0 评论 -
洛谷P4053 ← 优先队列
【题目来源】https://www.luogu.com.cn/problem/P4053【题目描述】小刚在玩JSOI提供的一个称之为“建筑抢修”的电脑游戏:经过了一场激烈的战斗,T部落消灭了所有z部落的入侵者。但是T部落的基地里已经有N个建筑设施受到了严重的损伤,如果不尽快修复的话,这些建筑设施将会完全毁坏。现在的情况是:T部落基地里只有一个修理工人,虽然他能瞬间到达任何一个建筑,但是修复每个建筑都需要一定的时间。同时,修理工人修理完一个建筑才能修理下一个建筑,不能同时修理多个建筑。如果某个建筑在一段时间原创 2022-05-21 14:13:22 · 399 阅读 · 0 评论 -
priority_queue元素为结构体时需重载operator<
STL priority_queue具有“自动排序”的强大功能。其默认使用operator<的比较方式进行排序。但是,对于自定义类型(如结构体、联合体、枚举等),则必须重载operator<比较方式。重载 operator< 的一个示例代码如下所示:bool operator<(Node a,Node b){ if(a.pr!=b.pr) return a.pr<b.pr; else return a.index>b.index;}...原创 2022-04-30 23:46:57 · 711 阅读 · 1 评论 -
利用 STL priority_queue 进行数据排序
【STL priority_queue 官方链接】STL priority_queue 的功能强大在哪里呢? 四个字:自动排序。其官方文档链接为:http://www.cplusplus.com/reference/queue/priority_queue/【STL priority_queue模板声明】STL priority_queue模板声明带有三个参数:priority_queue<Type, Container, Functional>其中:Type为数据类型;Container为保存原创 2022-04-30 18:07:41 · 282 阅读 · 0 评论 -
HDU 1873 - 看病要排队 ← 优先队列
【题目链接】http://acm.hdu.edu.cn/showproblem.php?pid=1873【问题描述】看病要排队这个是地球人都知道的常识。 不过经过细心的0068的观察,他发现了医院里排队还是有讲究的。0068所去的医院有三个医生(汗,这么少)同时看病。而看病的人病情有轻重,所以不能根据简单的先来先服务的原则。所以医院对每种病情规定了10种不同的优先级。级别为10的优先权最高,级别为1的优先权最低。医生在看病时,则会在他的队伍里面选择一个优先权最高的人进行诊治。如果遇到两个优先权一样的病人的原创 2022-04-30 08:58:28 · 254 阅读 · 1 评论 -
用pair做优先队列priority_queue元素的例子
【算法分析】一、pairpair将两个数据(经常为不同数据类型)组合成一组数据。pair的实现是一个结构体,主要的两个成员变量是first、second。pair的常见构造方法如下:1.pair<T1, T2> p1;创建一个空的pair对象,它的两个元素分别是T1和T2类型,然后赋值初始化。实例如下:#include<bits/stdc++.h>using namespace std;int main() { pair<int,double>原创 2020-10-05 16:41:39 · 10601 阅读 · 2 评论 -
洛谷 P1115 最大子段和(利用优先队列priority_queue)
【题目描述】给出一段序列,选出其中连续且非空的一段使得这段和最大。【输入格式】第一行是一个正整数N,表示了序列的长度。第二行包含N个绝对值不大于10000的整数Ai,描述了这段序列。【输出格式】一个整数,为最大的子段和是多少。子段的最小长度为1。【输入输出样例】输入 #172 -4 3 -1 2 -4 3输出 #14【...转载 2019-09-01 15:33:14 · 155 阅读 · 0 评论 -
电路维修 -> 双端队列 BFS
【问题描述】Elf是来自Gliese星球的少女,她有一辆飞行车。飞行车电路板的整体结构是一个R行C列的网格(R,C≤500),网格的交点都是电路板的接点,每个格子都包含一个电子元件。电子元件的主要部分是一个可旋转的、连接一条对角线上的两个接点的短电缆。在旋转之后,它就可以连接另一条对角线的两个接点。电路板左上角的接点接入直流电源,右下角的接点接入飞行车的发动装置。如下图所示。某天,Elf的飞行车发生了故障。Elf发现故障原因是因为某些元件的方向不小心发生了改变,使电路板处于断路的状态。她准备通过计算.原创 2021-07-25 00:09:18 · 280 阅读 · 0 评论