考虑以下几个问题:

将一个序列排序

某神仙: \(\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的更多相关文章

  1. POJ - 3249 Test for Job (在DAG图利用拓扑排序中求最长路)

    (点击此处查看原题) 题意 给出一个有n个结点,m条边的DAG图,每个点都有权值,每条路径(注意不是边)的权值为其经过的结点的权值之和,每条路径总是从入度为0的点开始,直至出度为0的点,问所有路径中权 ...

  2. C# 数据结构--排序[下]

    希尔排序(Shell Sort) 排序思想: 先取一个小于n的整数d1作为第一个增量,把文件的全部记录分组.所有距离为d1的倍数的记录放在同一个组中.先在各组内进行直接插入排序:然后,取第二个增量d2 ...

  3. JS中的算法与数据结构——排序(Sort)(转)

    排序算法(Sort) 引言 我们平时对计算机中存储的数据执行的两种最常见的操作就是排序和查找,对于计算机的排序和查找的研究,自计算机诞生以来就没有停止过.如今又是大数据,云计算的时代,对数据的排序和查 ...

  4. JS中的算法与数据结构——排序(Sort)

    排序算法(Sort) 引言 我们平时对计算机中存储的数据执行的两种最常见的操作就是排序和查找,对于计算机的排序和查找的研究,自计算机诞生以来就没有停止过.如今又是大数据,云计算的时代,对数据的排序和查 ...

  5. 数据结构&堆&heap&priority_queue&实现

    目录 什么是堆? 大根堆 小根堆 堆的操作 STL queue 什么是堆? 堆是一种数据结构,可以用来实现优先队列 大根堆 大根堆,顾名思义就是根节点最大.我们先用小根堆的建堆过程学习堆的思想. 小根 ...

  6. C语言利用指针排序与选择排序算法

    //读入字符串,并排序字符串 #include <stdio.h> #include <string.h> #define SIZE 81 #define LIM 20 #de ...

  7. Java利用反射排序

    前言 Java为我们提供了几种排序得方法,比如Arrays和Collections类,但是前提是数组或者集合中的元素都必须实现Comparable接口,基本的数据类型都已经实现了Comparable接 ...

  8. Scrambled Polygon---poj2007(利用叉积排序)

    题目链接:http://poj.org/problem?id=2007 题意:乱序给出凸多边形的顶点坐标,要求按逆时 针顺序输出各顶点.给的第一个点一定是 (0,0),没有其他点在坐标轴上,没有三点 ...

  9. 利用js排序html表格

    在web前端开发中会遇到排序等功能,当然也可以用服务器端来排序,今天我做一个笔记,怎么用js来实现这些复杂的功能呢. 在学习这个之前一定得用html dom jquery 的知识,要不没有办法看明白的 ...

随机推荐

  1. ASP.NET一般处理程序之网站请求过程

  2. Spring Batch 批处理原则与建议

    Spring Batch 批处理原则与建议 当我们构建一个批处理的过程时,必须注意以下原则: 通常情况下,批处理的过程对系统和架构的设计要够要求比较高,因此尽可能的使用通用架构来处理批量数据处理,降低 ...

  3. PP: Taking the human out of the loop: A review of bayesian optimization

    Problem: Design problem parameters consist of the search space of your model. Scientists design expe ...

  4. GYCTF easy_thinking

    前期储备:ThinkPHP6 任意文件操作漏洞分析 https://paper.seebug.org/1114/ 学习链接: https://www.freebuf.com/articles/web/ ...

  5. 0219 springmvc-拦截器和响应增强

    拦截器 拦截器分同步拦截器和异步拦截器: HandlerInterceptor 方法和执行时机 可以看DispathcerServlet的原来确定它的三个方法的执行时机: AsynHandlerInt ...

  6. linux-redis cluster集群(redis5.x)

    1.查看redis安装目录: [root@iZwz97y9qoykzzotubitq3Z redis-5.0.5]# lltotal 472-rw-rw-r-- 1 root root 106874 ...

  7. vue加载单文件使用vue-loader报错

    报错信息如下:ERROR in ./src/login.vue Module Error (from ./node_modules/vue-loader/lib/index.js): vue-load ...

  8. 【C语言】【欢哥TV】冒泡法排序视频演示

    fromB站 点击进入:Go

  9. c++中vector函数

    std::vector <cv::Point> VectorPoints 说明:首先定义一个Point(即Point2i---二维整型的点)类型的变量VectorPoints,这就是我们创 ...

  10. 1.spring异常:Caused by: java.lang.NoClassDefFoundError: org/aopalliance/intercept/MethodInterceptor

    org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springfr ...