C++ 优先队列类实现

 1 #include <cstdio>
 2 #include <iostream>
 3 #include <vector>
 4 #include <algorithm>
 5 #include <cstring>
 6 #include <queue>
 7 using namespace std;
 8
 9 int a[10000],b[10000];
10 class t
11 {
12 public:
13     int x, y;
14     bool operator<(const t& p) const {
15         return x>p.x;
16     }
17     t(int a, int b):x(a),y(b){}
18     t(){}
19 };
20
21 priority_queue<t> Q;
22
23 int main(){
24     int n;
25     scanf("%d",&n);
26     for (int i=1;i<=n;i++) scanf("%d",&a[i]);
27     for (int i=1;i<=n;i++) scanf("%d",&b[i]);
28     for (int i=1;i<=n;i++) Q.push(t(a[i],b[i]));
29     while (!Q.empty()){
30         t p=Q.top();
31         Q.pop();
32         printf("%d %d\n",p.x,p.y);
33     }
34 }
时间: 2024-08-06 18:14:49

C++ 优先队列类实现的相关文章

优先队列原理与实现

优先队列是一种用来维护一组元素构成的结合S的数据结构,其中每个元素都有一个关键字key,元素之间的比较都是通过key来比较的.优先队列包括最大优先队列和最小优先队列,优先队列的应用比较广泛,比如作业系统中的调度程序,当一个作业完成后,需要在所有等待调度的作业中选择一个优先级最高的作业来执行,并且也可以添加一个新的作业到作业的优先队列中.Java中,PriorityQueue的底层数据结构就是堆(默认是小堆),关于Java的PriorityQueue更多知识请点击:深入理解Java Priorit

队列的应用:优先队列

优选队列:假设我们给每一个元素都分配一个数字来标记其优先级.最好还是设较小的数字具有较高的优先级,这样我们就能够在一个集合中訪问优先级最高的元素并对其进行查找和删除操作了. 优先队列(priority queue)是0个或多个元素的集合,每一个元素都有一个优先权,对优先级队列运行的操作有(1)查找(2)插入一个新元素(3)删除 普通情况下,查找操作用来搜索优先权最大的元素.删除操作用来删除该元素 .对于优先权同样的元素,可按先进先出次序处理或按随意优先权进行. 以上是网上常见的对优先级队列的描写

javascript数据结构-优先队列

这里之所以扩充一个 有限队列 是因为,生活使用中队列通常会附加优先级,比如排队买票,一般老人和军人等会有优先权限. 实现:继承上篇的 普通队列实现.这里用一种方法,入队的时候,进行排序插入到指定位置,输出不变. 优先队列类 //继承自 Queue function PriorityQueue(){ Queue.call(this); } 继承原型方法 function base(p, c){ var h = {}, P = p.prototype, C = c.prototype; for(va

数据结构实验2(设计哈弗曼编码和译码系统)

设计一个哈弗曼编码和译码系统, 要求如下: B--建树:读入字符集和各字符频度,建立哈夫曼树. T--遍历:先序和中序遍历二叉树. E--生成编码:根据已建成的哈夫曼树,产生各个字符的哈夫曼编码. C--编码:输入由字符集中字符组成的任意字符串,利用已生成的哈夫曼编码进行编码,显示编码结果,并将输入的字符串及其编码结果分别保存在磁盘文件textfile.txt和codefile.txt中. D--译码:读入codefile.txt,利用已建成的哈夫曼树进行译码,并将译码结果存入磁盘文件resul

Queue结构模拟

接着我们介绍queue数据结构,我们通过对简单的数据结构的模拟后是不是感觉自己的内功提高的呀,那有人会问什么是内功呢?其实我觉得就是一个思维意识,换句话来说就是你站得更好的.这样的话,我觉得我们的工作更加有意义,我们以分享,交流,责任为目标学习分享技术. 1.基础的节点对象Node public class Node { private Object data;// 存放值 private Node next;// 下一个节点 public   Node(){} public Node(Obje

ysoserial分析【一】 之 Apache Commons Collections

目录 0x00 前言 0x01 基础知识 Transformer 利用InvokerTransformer造成命令执行 Map TransformedMap LazyMap AnnotationInvocationHandler 动态代理 0x02 Commons Collections Gadget 分析 CommonsCollections1 CommonsCollections2 疑问 CommonsCollections3 CommonsCollections4 CommonsColle

用C++的类做三种优先队列的实现

学过数据结构的都知道优先队列这种东西,普通的队列是依据入队顺序,先入队的先出队,而优先队列则是依照键值,键值越大(或越小),就越先出队. 所以,优先队列基本支持push,pop,empty,size,top,这几种操作.最近在看C++prime,学了类之后觉得非常适合用来实现高级数据结构,于是就动手做了一下,花了一周,终于弄好了.以下的实现都默认最小堆. 二叉堆: 最常用,最简单的堆实现,因为二叉堆是完全二叉树,所有可以使用顺序存储结构,也就是说,数组来保存数据.二叉堆主要基于上滤与下滤操作来维

Queue接口的实现类竟然有一个是LinkedList,一个是优先队列

输出是: Queue接口底层换一个实现类,照样的是调用Queue接口中的方法

poj3190区间类贪心+优先队列

题意:每个奶牛产奶的时间为A到B,每个奶牛产奶时要占用一间房子,问n头奶牛产奶共需要多少房子,并输出每头奶牛用哪间房子 分析:这题就是一个裸的贪心,将奶牛按开始时间进行排序即可,但考虑一下数据范围,我们可以用一个优先队列来进行维护,在优先队列中我们按照奶牛的结束时间最小构造小顶堆,然后判断新进来的元素的开始时间是否比最小的结束时间大,若是,加入队列,修改队列,若不是,加入对列,并且计数加1 注意自定义类型的优先队列的维护方法.详见:http://blog.sina.com.cn/s/blog_4