1 // 洛谷1801
 2 // 一个升序堆,一个降序堆
 3 // 降序堆维护序列的前i个最小值
 4 // 插如元素的时候,如果x小于降序堆最大值,则替换,并将最大值插入升序堆;否则,直接插入升序堆
 5 // 每次输出升序堆的最小值即可
 6
 7
 8 #include <bits/stdc++.h>
 9 using namespace std;
10 #define LL long long
11 typedef pair<int,int> pii;
12 const int inf = 0x3f3f3f3f;
13 const int N =1e3+50;
14 #define clc(a,b) memset(a,b,sizeof(a))
15 const double eps = 1e-8;
16 void fre() {freopen("in.txt","r",stdin);}
17 void freout() {freopen("out.txt","w",stdout);}
18 inline int read() {int x=0,f=1;char ch=getchar();while(ch>'9'||ch<'0') {if(ch=='-') f=-1; ch=getchar();}while(ch>='0'&&ch<='9') {x=x*10+ch-'0';ch=getchar();}return x*f;}
19
20 priority_queue<int> qmax;
21 priority_queue<int,vector<int>,greater<int> > qmin;
22 int a[300010];
23 int main(){
24     int n,m;
25     scanf("%d%d",&n,&m);
26     for(int i=1;i<=n;i++) scanf("%d",&a[i]);
27     int j=1;
28     for(int i=1;i<=m;i++){
29         int x;
30         scanf("%d",&x);
31         for(;j<=x;j++)
32         if(!qmax.empty()&&a[j]<qmax.top()){
33             qmin.push(qmax.top());
34             qmax.pop();
35             qmax.push(a[j]);
36         }
37         else qmin.push(a[j]);
38         printf("%d\n",qmin.top());
39         qmax.push(qmin.top());
40         qmin.pop();
41     }
42     return 0;
43 }

转载于:https://www.cnblogs.com/ITUPC/p/5929780.html

升序堆和降序堆(优先队列) 洛谷1801相关推荐

  1. 堆排序--采用快速排序(利用大堆实现升序,小堆实现降序)

    对堆进行排序,利用大堆实现升序,小堆实现降序.例如升序的实现,将较大数据存放在最后面,依次往前存放数据.具体为交换第一个元素和最后一个元素,再将不包含最后一个元素的堆进行下调,使堆保持大堆,将最大数据 ...

  2. R语言dplyr包使用arrange函数、group_by函数、mutate函数生成分组数据的排名(rank)实战(Rank Variable by Group):升序排名、降序排名以及相同排名的处理

    R语言dplyr包使用arrange函数.group_by函数.mutate函数生成分组数据的排名(rank)实战(Rank Variables by Group):升序排名.降序排名以及相同排名的处 ...

  3. 奇数位升序偶数位降序链表排序

    题目描述:一个链表,奇数位升序偶数位降序,让链表变成升序的. 比如:1 8 3 6 5 4 7 2 9,最后输出1 2 3 4 5 6 7 8 9. 分析: 这道题可以分成三步: 首先根据奇数位和偶数 ...

  4. 奇数位升序偶数位降序的链表进行排序

    题目描述:一个链表,特点是奇数位升序偶数位降序,使得链表变成升序的. 分析 代码 节点类: main方法: 初始化方法: 按照奇偶位拆分成两个链表: 反转链表: 合并两个有序链表(非递归): 合并两个 ...

  5. MYSQL 数据库基础(三 流程函数的学习,多行函数相当于统计计算等等、group by的使用、goup by衍生出的having、排序关键字order by、升序ASC、降序DESC、模糊查询等)

    流程函数 类似与java中的判断情况 的学习 实际应用: -- 满足条件执行 第一个逗号后面的 否则执行第二个逗号 SELECT ename,sal,IF(sal<2500,'低于2500',' ...

  6. Java学习(90)Java集合排序——Comparator接口介绍、案例:对宠物猫分别按名字升序、年龄降序进行排列

    Java集合排序--Comparator接口介绍.案例:对宠物猫分别按名字升序.年龄降序进行排列 Comparator接口介绍 1. Comparator接口: 2. Comparator接口中的co ...

  7. python选出奇数并降序_奇数结点升序偶数结点降序的单链表排序(Python实现)

    题目 一个链表,奇数结点升序,偶数结点降序,要求变成一个全升序的链表. 例如:1->8->2->7->3->6->4->5,变为1->2->3-& ...

  8. oracle用升序索引去降序查询,Oracle工作札记

    Oracle工作笔记 oracle_hint_使用说明示例 1. /*+ALL_ROWS*/ 表明对语句块选择基于开销的优化方法,并获得最佳吞吐量,使资源消耗最小化. 例如: SELECT /*+AL ...

  9. python单链表排序_奇数结点升序偶数结点降序的单链表排序(Python实现)

    题目 一个链表,奇数结点升序,偶数结点降序,要求变成一个全升序的链表. 例如:1->8->2->7->3->6->4->5,变为1->2->3-& ...

最新文章

  1. Spring中ref local与ref bean区别
  2. thymeleaf 学习笔记
  3. QStackedWidget实现自适应紧凑布局
  4. Webview中无法触发手势方法(ontouchevent,onfling...)的解决方法
  5. Swap in C C++ C# Java
  6. Linux的c编程getopt(分析命令行参数)
  7. Code-NFine:变量修改
  8. Python Scrapy 创建第一个爬虫项目
  9. 数字电路实验 03 - | 数据选择器及其应用
  10. 身居乱世之中,重新审视“活法
  11. 一行代码显示WiFi密码
  12. GraphicsLab Project之简易贴画系统(Decal System)
  13. 利用青龙面版实现内网穿透,超级简单方法
  14. C-Kermit在linux 下的安装和使用
  15. 在Outlook2007中设置QQ邮箱为IMAP/SMTP服务器
  16. AnnotationMethodHandlerAdapter废弃的解决方法
  17. 浅谈Spring框架AOP概念
  18. vue开发的微信服务号H5内嵌的腾讯地图和导航
  19. 2022 年工业工程、人工智能、计算机和应用科学前沿国际会议RTIACA2022征稿通知
  20. 专利申请流程所需时间是怎样的?

热门文章

  1. 所以進入到二十一世紀之後
  2. 公司能否开除长期请病假,无法正常工作的员工?
  3. 网络赚钱,粉丝不是越多越好
  4. 要想赚到最轻松的钱,就要靠资源整合的重要性
  5. Qt4_Find File对话框
  6. ipv6 6rd前缀计算
  7. sql语句截断_SQL Server中SQL截断和SQL删除语句之间的区别
  8. 使用Java对sftp带有中文路径的文件夹进行下载,乱码打不开文件夹
  9. IIS7的CMD指令
  10. UpdatePanel之间的调用