既然是队列那么先要包含头文件#include <queue> 优先队列具有队列的所有特性,包括基本操作,只是在这基础上添加了内部的一个排序,它本质是一个堆实现的 。定义:priority_queue<Type, Container, Functional> Type 就是数据类型,Container ...
分类:
编程语言 时间:
2018-07-08 19:04:13
阅读次数:
183
无论怎么初始化,优先队列的长度不是固定的,你add一个,size就会++,满了就会扩容。 所以必须手动维护优先队列的大小,比如topK问题。 定义一个len,len<max的时候就直接add,len++ 满了就poll之后,再add 将一堆无序的元素放进优先队列中,每次调用poll,都能获得当前小顶 ...
分类:
编程语言 时间:
2018-07-07 20:36:57
阅读次数:
311
北邮的同学问了我优先队列的用法,引出了这道题。 好吧,我也被有限队列先入为主了。 贪心算法,并且没有后效性。 按照一开始的思路做,并做了一点小优化,超时 好像不用每次都维护一个新的优先队列 因为W肯定是递增的,那么只要把新元素加进优先队列就好了 这算一个n*logn的优化吧! 还有之前没有在循环中对 ...
分类:
其他好文 时间:
2018-07-07 00:27:01
阅读次数:
198
题目:http://poj.org/problem?id=3463 当然要给一个点记最短路和次短路的长度和方案。 但往优先队列里放的结构体和vis竟然也要区分0/1,就像把一个点拆成两个点了一样。 不要区分k的fx。 ...
分类:
其他好文 时间:
2018-07-06 20:27:51
阅读次数:
172
"传送门" 题目描述 小刚在玩JSOI提供的一个称之为“建筑抢修”的电脑游戏:经过了一场激烈的战斗,T部落消灭了所有z部落的入侵者。但是T部落的基地里已经有N个建筑设施受到了严重的损伤,如果不尽快修复的话,这些建筑设施将会完全毁坏。现在的情况是:T部落基地里只有一个修理工人,虽然他能瞬间到达任何一个 ...
分类:
Web程序 时间:
2018-07-05 23:23:02
阅读次数:
210
【题目链接】 http://poj.org/problem?id=2449 【算法】 A*(启发式搜索) 首先,求第k短路是可以用优先队列BFS做的,当T第k次入队时,就求得了第k短路,但是,这种做法的复杂度太高 考虑使用A*算法,每个点的估价函数就是这个点到T的最短路,不妨将所有的边反过来求最短路 ...
分类:
其他好文 时间:
2018-07-05 23:19:07
阅读次数:
175
参考博客:http://www.cnblogs.com/biyeymyhjob/archive/2012/07/30/2615542.html Prim算法 从任意一点开始,找到与之连接的边,然后放入优先队列ee,找到权值最小的边,把这条边所连接的点标记一下,然后把与这个点连接的边放入优先队列ee( ...
分类:
其他好文 时间:
2018-07-01 20:58:46
阅读次数:
254
题意:有向图,给你m条边,每条边有两个权值,路径长和通过这条路径的花费,问你在不超过k花费的前提下,最短的路径从1走到n 解题思路:因为边数很少,我们可以直接用暴力每条边的方式来找最小的路径长,也就是用一个优先队列,每次弹出路径最短的边,计算当前花费和下条边的花费如果小于k,那么这条边就可行。 很多 ...
分类:
其他好文 时间:
2018-07-01 19:29:05
阅读次数:
129
STL中的heap是用数组来进行模拟的,heap 本身的定义就是一颗完全的二叉树(注意和满二叉树的区别)。 heap分为大根堆和小根堆。 堆的主要操作由构建堆,调整堆,这两个。 其中有一个heap算法就是在此基础之上的。 构建好一颗大根堆,然后 将根顶元素和最后一个元素呼唤,将堆的大小减1,同时再次 ...
分类:
其他好文 时间:
2018-07-01 11:55:34
阅读次数:
178
1.优先队列:一种支持删除最大元素和插入元素两种操作的数据结构。 2.当一颗二叉树的每个结点都大于等于它的两个子结点时,它被称为堆有序。 3.根结点是堆有序的二叉树中的最大结点。 4.二叉堆是一组能够用堆有序的完全二叉树排序的元素,并在数组中按照层级储存(不使用数组的第一个位置)。 5.在一个二叉堆 ...
分类:
其他好文 时间:
2018-06-27 13:50:25
阅读次数:
123