升序堆和降序堆(优先队列) 洛谷1801
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相关推荐
- 堆排序--采用快速排序(利用大堆实现升序,小堆实现降序)
对堆进行排序,利用大堆实现升序,小堆实现降序.例如升序的实现,将较大数据存放在最后面,依次往前存放数据.具体为交换第一个元素和最后一个元素,再将不包含最后一个元素的堆进行下调,使堆保持大堆,将最大数据 ...
- R语言dplyr包使用arrange函数、group_by函数、mutate函数生成分组数据的排名(rank)实战(Rank Variable by Group):升序排名、降序排名以及相同排名的处理
R语言dplyr包使用arrange函数.group_by函数.mutate函数生成分组数据的排名(rank)实战(Rank Variables by Group):升序排名.降序排名以及相同排名的处 ...
- 奇数位升序偶数位降序链表排序
题目描述:一个链表,奇数位升序偶数位降序,让链表变成升序的. 比如:1 8 3 6 5 4 7 2 9,最后输出1 2 3 4 5 6 7 8 9. 分析: 这道题可以分成三步: 首先根据奇数位和偶数 ...
- 奇数位升序偶数位降序的链表进行排序
题目描述:一个链表,特点是奇数位升序偶数位降序,使得链表变成升序的. 分析 代码 节点类: main方法: 初始化方法: 按照奇偶位拆分成两个链表: 反转链表: 合并两个有序链表(非递归): 合并两个 ...
- MYSQL 数据库基础(三 流程函数的学习,多行函数相当于统计计算等等、group by的使用、goup by衍生出的having、排序关键字order by、升序ASC、降序DESC、模糊查询等)
流程函数 类似与java中的判断情况 的学习 实际应用: -- 满足条件执行 第一个逗号后面的 否则执行第二个逗号 SELECT ename,sal,IF(sal<2500,'低于2500',' ...
- Java学习(90)Java集合排序——Comparator接口介绍、案例:对宠物猫分别按名字升序、年龄降序进行排列
Java集合排序--Comparator接口介绍.案例:对宠物猫分别按名字升序.年龄降序进行排列 Comparator接口介绍 1. Comparator接口: 2. Comparator接口中的co ...
- python选出奇数并降序_奇数结点升序偶数结点降序的单链表排序(Python实现)
题目 一个链表,奇数结点升序,偶数结点降序,要求变成一个全升序的链表. 例如:1->8->2->7->3->6->4->5,变为1->2->3-& ...
- oracle用升序索引去降序查询,Oracle工作札记
Oracle工作笔记 oracle_hint_使用说明示例 1. /*+ALL_ROWS*/ 表明对语句块选择基于开销的优化方法,并获得最佳吞吐量,使资源消耗最小化. 例如: SELECT /*+AL ...
- python单链表排序_奇数结点升序偶数结点降序的单链表排序(Python实现)
题目 一个链表,奇数结点升序,偶数结点降序,要求变成一个全升序的链表. 例如:1->8->2->7->3->6->4->5,变为1->2->3-& ...
最新文章
- Spring中ref local与ref bean区别
- thymeleaf 学习笔记
- QStackedWidget实现自适应紧凑布局
- Webview中无法触发手势方法(ontouchevent,onfling...)的解决方法
- Swap in C C++ C# Java
- Linux的c编程getopt(分析命令行参数)
- Code-NFine:变量修改
- Python Scrapy 创建第一个爬虫项目
- 数字电路实验 03 - | 数据选择器及其应用
- 身居乱世之中,重新审视“活法
- 一行代码显示WiFi密码
- GraphicsLab Project之简易贴画系统(Decal System)
- 利用青龙面版实现内网穿透,超级简单方法
- C-Kermit在linux 下的安装和使用
- 在Outlook2007中设置QQ邮箱为IMAP/SMTP服务器
- AnnotationMethodHandlerAdapter废弃的解决方法
- 浅谈Spring框架AOP概念
- vue开发的微信服务号H5内嵌的腾讯地图和导航
- 2022 年工业工程、人工智能、计算机和应用科学前沿国际会议RTIACA2022征稿通知
- 专利申请流程所需时间是怎样的?