优先队列我们在之前讲过的《堆的基础知识》和《堆排序》之后,我们来讲讲最大堆和最小堆的具体应用优先队列!优先队列基础知识我们来看看这样的场景,给定你一组数据,要你在这组数据里面找到最大的那个数据,你要怎么做?
你可能会说直接遍历一次就行啦,运行时间也就O(n)O(n),但是如果要求你在这堆数据里面找到最大的,然后删除,再在剩下的元素里面找到最大的,那还是要遍历一般所有数据。那有没有其他快速的方法呢?...
分类:
其他好文 时间:
2015-05-07 22:12:26
阅读次数:
204
http://poj.org/problem?id=2010"Moo U"大学有一种非常严格的入学考试(CSAT) ,每头小牛都会有一个得分。然而,"Moo U"大学学费非常昂贵,并非每一头小牛都能支付的起,很多小牛都需要经济援助,但是学校只有有限的资金F。"Moo U"大学只会从C个学生里选N个学...
分类:
其他好文 时间:
2015-05-07 20:22:28
阅读次数:
113
//优先队列
#include
using namespace std;
class Queue
{
private:
struct Node //创建一个节点信息,包括数据和优先级
{
int data;
int level;
Node() :data(), level(-1){}
Node(int data_, int level_) :data(data_),...
分类:
编程语言 时间:
2015-05-07 18:58:49
阅读次数:
119
http://poj.org/problem?id=3614有c头奶牛在沙滩上晒太阳,每头奶牛能忍受的阳光强度有一个最大值(max_spf) 和最小值(min_spf),奶牛有L种防晒霜,每种可以固定阳光强度在某一个值,每种的数量是cover[i] ,每头奶牛只能用一瓶防晒霜,问最多有多少头奶牛能在...
分类:
其他好文 时间:
2015-05-07 12:11:42
阅读次数:
100
简介: 优先队列是一种容器适配器,优先队列的第一个元素总是最大或最小的(自定义的数据类型需要重载运算符)。它是以堆为基础实现的一种数据结构。成员函数(Member functions)(constructor): Construct priority queue (public member fu....
分类:
其他好文 时间:
2015-05-07 00:36:01
阅读次数:
115
分析:使用优先队列.
以next为优先级,小的先出队
读入数据后排序,初始化队列第一个元素(0,a[0],0)
每次出队一个元素,入队(sum,sum+a[nextid+1],nextid+1),(next,next+a[nextid+1],nextid+1),即是否加上a[nextid+1]都考虑进去了。
这样每次新加入的元素都是下一个最小的(next),进行m次就得到了第m小。
...
分类:
其他好文 时间:
2015-05-06 15:08:18
阅读次数:
94
http://poj.org/problem?id=2431你需要驾驶一辆卡车做一次长途旅行,但是卡车每走一单位就会消耗掉一单位的油,如果没有油就走不了,为了修复卡车,卡车需要被开到距离最近的城镇,在当前位置和城镇之间有n个加油站可以加油。为了减少危险,需要最少的加油次数,卡车的油箱可以看作无限大,...
分类:
其他好文 时间:
2015-05-05 21:37:51
阅读次数:
134
把我坑到死的题开始开题以为是全图连通是的最小值 ,以为是最小生成树,然后敲了发现不是,看了下别人的题意,然后懂了;然后发现数据大,要用邻接表就去学了一下邻接表,然后又去学了下优先队列优化的dij;这坑爹的题目我交了10几遍,也不知道错在哪里;后来知道了maxint要#define Maxint 10...
分类:
其他好文 时间:
2015-05-05 10:11:07
阅读次数:
118
A*+SPFA算法:
(1)将有向图的所有边正向、反向分别存入两个不同的边集(Edges,Edges1)中。用反向边集,以所求终点t为源点,利用SPFA或Dijkstra求解出所有点到t的最短路径,用Dist[i]数组来表示点i到点t的最短距离。
(2)建立一个优先队列,将源点s加入到队列中。
(3)从优先队列中取出最小的点p,如果点p == t,则计算t出队的次数。如果当前路径长度就是s到t...
分类:
其他好文 时间:
2015-05-05 00:09:25
阅读次数:
128
n*m的图,其中有
‘.’:空地
‘X':墙
’S':起点
‘D':终点
’1‘-’9‘:表示该点有多少炸弹,炸弹可以炸墙
n,m范围只有8
优先队列里直接把当前的状态图压入,判断墙是否还存在,每个点可以走到多次
#include "stdio.h"
#include "string.h"
#include "queue"
using namespace std;
const i...
分类:
其他好文 时间:
2015-05-04 20:17:11
阅读次数:
123