利用数据结构排序的priority_queue
考虑以下几个问题:
将一个序列排序
某神仙: \(\mathtt{sort}\) !!!
每次取出最前面的两个数
某神仙: \(a_i\) 和 \(a_{i+1}\) 啊!!
相加,再加入序列
某神仙:...... for 循环乱搞啊!
保持序列的有序性
某神仙:(声音逐渐变弱)再搞一次 \(\mathtt{sort}\) 呗。
\(n≤10000\),请注意程序的时间复杂度
某神仙:卒(
于是,这就需要用到 STL queue 中的 \(\mathtt{priority\_queue}\)了!!!
唯一需要注意的地方是 \(\mathtt{priority\_queue}\) 的定义,即
小根堆:priority_queue<int,vector<int>,greater<int> > q;
大根堆:priority_queue<int,vector<int>,less<int> > q;
其中第一个 int 表示优先队列存放的数据类型, vector<int> 表示存放的方式是数组, greater<int> 表示小根堆(从小到大),less<int> 表示大根堆(从大到小)。注意最后的两个 >> 要写成 > > ,否则可能会被编译器误认为位运算右移符号。
然后就是很基础的操作了:
q.push(x) //在优先队列中插入x O(logN)
q.top() //取出队首的元素 O(1)
q.pop() //令队首出队 O(logN)
q.empty() //判断队列是否为空
q.size() //队列中元素的数量
利用数据结构排序的priority_queue的更多相关文章
- POJ - 3249 Test for Job (在DAG图利用拓扑排序中求最长路)
(点击此处查看原题) 题意 给出一个有n个结点,m条边的DAG图,每个点都有权值,每条路径(注意不是边)的权值为其经过的结点的权值之和,每条路径总是从入度为0的点开始,直至出度为0的点,问所有路径中权 ...
- C# 数据结构--排序[下]
希尔排序(Shell Sort) 排序思想: 先取一个小于n的整数d1作为第一个增量,把文件的全部记录分组.所有距离为d1的倍数的记录放在同一个组中.先在各组内进行直接插入排序:然后,取第二个增量d2 ...
- JS中的算法与数据结构——排序(Sort)(转)
排序算法(Sort) 引言 我们平时对计算机中存储的数据执行的两种最常见的操作就是排序和查找,对于计算机的排序和查找的研究,自计算机诞生以来就没有停止过.如今又是大数据,云计算的时代,对数据的排序和查 ...
- JS中的算法与数据结构——排序(Sort)
排序算法(Sort) 引言 我们平时对计算机中存储的数据执行的两种最常见的操作就是排序和查找,对于计算机的排序和查找的研究,自计算机诞生以来就没有停止过.如今又是大数据,云计算的时代,对数据的排序和查 ...
- 数据结构&堆&heap&priority_queue&实现
目录 什么是堆? 大根堆 小根堆 堆的操作 STL queue 什么是堆? 堆是一种数据结构,可以用来实现优先队列 大根堆 大根堆,顾名思义就是根节点最大.我们先用小根堆的建堆过程学习堆的思想. 小根 ...
- C语言利用指针排序与选择排序算法
//读入字符串,并排序字符串 #include <stdio.h> #include <string.h> #define SIZE 81 #define LIM 20 #de ...
- Java利用反射排序
前言 Java为我们提供了几种排序得方法,比如Arrays和Collections类,但是前提是数组或者集合中的元素都必须实现Comparable接口,基本的数据类型都已经实现了Comparable接 ...
- Scrambled Polygon---poj2007(利用叉积排序)
题目链接:http://poj.org/problem?id=2007 题意:乱序给出凸多边形的顶点坐标,要求按逆时 针顺序输出各顶点.给的第一个点一定是 (0,0),没有其他点在坐标轴上,没有三点 ...
- 利用js排序html表格
在web前端开发中会遇到排序等功能,当然也可以用服务器端来排序,今天我做一个笔记,怎么用js来实现这些复杂的功能呢. 在学习这个之前一定得用html dom jquery 的知识,要不没有办法看明白的 ...
随机推荐
- kanbanflow的使用
也许在工作中大家都听说过番茄工作法,就是每次在一个番茄钟25分钟内保持高度专注,并且在时间结束的时候会提醒你,然后稍作休息5分钟:此外,在产品迭代开发过程中常常会接受到不同的task:那么,我们是否可 ...
- Verilog-异步FIFO
参考博文:https://blog.csdn.net/alangaixiaoxiao/article/details/81432144 1.概述 异步FIFO设计的关键是产生“写满”和“读空”信号,这 ...
- Jenkins +Ant +Jmeter(apache-jmeter-5.1.1)自动化性能测试平台
1.安装配置好Jdk, 下载网址:https://www.cr173.com/soft/33894.html 2.Jmeter下载地址:http://jmeter.apache.org/downloa ...
- ActiveMQ的p2p模式与发布订阅模式
1.消息中间件:采用异步通讯防止,支持点对点以及发布订阅模式,可以解决高并发问题 传统调用接口,可能发生阻塞,重复提交,超时等等问题,可以利用消息中间件发送异步通讯请求 ...
- ArcGis Server manager 忘记用户名和密码
ArcGIS 10.1及以后版本重置Server Manager账户密码:(1)找到arcgis server的安装目录,目录指向\ArcGIS\Server\tools\passwordreset文 ...
- asm相关内容想下载(包括 jar 包)
网址:http://download.forge.ow2.org/asm/
- CenterOS下 Mysql数据库中数据字符乱码
1.修改数据库字符编码 mysql> alter database mydb character set utf8 ; 2.创建数据库时,指定数据库的字符编码 mysql> create ...
- 巨杉数据库入选年度Gartner Peer Insights报告,获得市场高度评价
Gartner Peer Insights 年度评选结果于近日出炉,在数据库管理系统市场报告中,巨杉数据库获得了总平均分4.7(满分5分)的成绩,在众多国际厂商中位居第三,是国内唯一一家入选的数据库厂 ...
- go语言 内置的椭圆数字签名及其验证算法
package main import ( "crypto/ecdsa" "crypto/elliptic" "crypto/rand" & ...
- Linux 基本命令简单学习
平常工作中需要使用到的一些Linux基本命令,简单记录: 通过订单号查看日志: cat /---/---/xxxx20190908.log | grep C52918588112261 -C 5 ...