POJ 1442 Black Box(优先队列)
题目地址:POJ 1442
这题是用了两个优先队列,当中一个是较大优先。还有一个是较小优先。
让较大优先的队列保持k个。每次输出较大优先队列的队头。
每次取出一个数之后,都要先进行推断,假设这个数比較大优先的队列的队头要小,就让它增加这个队列。队列头移到较小优先的队列中。然后当较大优先的数不足k个的时候,就让较小优先的队列的队头移到较大优先的队头中。
代码例如以下。
#include <iostream>
#include <cstdio>
#include <string>
#include <cstring>
#include <stdlib.h>
#include <math.h>
#include <ctype.h>
#include <queue>
#include <map>
#include <set>
#include <algorithm> using namespace std;
int a[40000], b[40000];
struct xiao
{
int x;
bool operator < (const xiao &a) const
{
return x > a.x;
}
};
struct da
{
int x;
bool operator < (const da &a) const
{
return x<a.x;
}
};
int main()
{
int n, m, i, j, cnt, x, k;
while(scanf("%d%d",&n,&m)!=EOF)
{
priority_queue<xiao>q1;
priority_queue<da>q2;
xiao f1;
da f2;
for(i=0; i<n; i++)
{
scanf("%d",&a[i]);
}
for(i=0; i<m; i++)
{
scanf("%d",&b[i]);
}
j=0;
for(i=0; i<m; i++)
{
while(j<b[i])
{
if(q2.empty()||a[j]>=q2.top().x)
{
f1.x=a[j];
q1.push(f1);
}
else
{
f1.x=q2.top().x;
q1.push(f1);
q2.pop();
f2.x=a[j];
q2.push(f2);
}
j++;
}
while(q2.size()<=i)
{
f1=q1.top();
f2.x=f1.x;
q1.pop();
q2.push(f2);
}
printf("%d\n",q2.top());
}
}
return 0;
}
POJ 1442 Black Box(优先队列)的更多相关文章
- poj 1442 Black Box(优先队列&Treap)
题目链接:http://poj.org/problem?id=1442 思路分析: <1>维护一个最小堆与最大堆,最大堆中存储最小的K个数,其余存储在最小堆中; <2>使用Tr ...
- POJ 1442 Black Box -优先队列
优先队列..刚开始用蠢办法,经过一个vector容器中转,这么一来一回这么多趟,肯定超时啊. 超时代码如下: #include <iostream> #include <cstdio ...
- POJ 1442 Black Box treap求区间第k大
题目来源:POJ 1442 Black Box 题意:输入xi 输出前xi个数的第i大的数 思路:试了下自己的treap模版 #include <cstdio> #include < ...
- poj 1442 Black Box(堆 优先队列)
题目:http://poj.org/problem?id=1442 题意:n,m,分别是a数组,u数组的个数,u[i]w为几,就加到a几,然后输出第i 小的 刚开始用了一个小顶堆,超时,后来看了看别人 ...
- [ACM] POJ 1442 Black Box (堆,优先队列)
Black Box Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 7099 Accepted: 2888 Descrip ...
- 优先队列 || POJ 1442 Black Box
给n个数,依次按顺序插入,第二行m个数,a[i]=b表示在第b次插入后输出第i小的数 *解法:写两个优先队列,q1里由大到小排,q2由小到大排,保持q2中有i-1个元素,那么第i小的元素就是q2的to ...
- POJ 1442 Black Box 堆
题目: http://poj.org/problem?id=1442 开始用二叉排序树写的,TLE了,改成优先队列,过了.. 两个版本都贴一下吧,赚稿费.. #include <stdio.h& ...
- POJ 1442 Black Box
第k大数维护,我推荐Treap..谁用谁知道.... Black Box Time ...
- 数据结构(堆):POJ 1442 Black Box
Black Box Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 10658 Accepted: 4390 Descri ...
随机推荐
- SPOJ GSS1 & GSS3&挂了的GSS5
线段树然后yy一下,搞一搞. GSS1: 题意:求最大区间和. #include <cstdio> #include <algorithm> using namespace s ...
- jQuery 对象转成 DOM 对象
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/stri ...
- 自学Python七 爬虫实战一
此文承接上文,让我们写一个简简单单的爬虫,循序而渐进不是吗?此次进行的练习是爬取前5页什么值得买网站中的白菜价包邮信息.包括名称,价格,推荐人,时间. 我们所需要做的工作:1.确定URL并获得页面代码 ...
- HTML 5概述
HTML语言是一种简易的文件交换标准,用于物理的文件结构,它旨在定义文件内的对象和描述文件的逻辑结构,而并不定义文件的显示.由于HTML所描述的文件具有极高的适应性,所以特别适合于WWW的出版环境. ...
- Leetcode0002--Add Two Numbers 链表求和
[转载请注明]http://www.cnblogs.com/igoslly/p/8672467.html 来看一下题目: You are given two non-empty linked list ...
- DeltaFish 校园物资共享平台 第五次小组会议
软工第五次小组会议 记录人:娄雨禛 会议地点:三教讨论区 会议时间:9:00-10:00 与会人员:软工小组成员 一.前端会议提要 前端分为“2+2”组合进行开发. 底层设计:齐天扬,刘鼎乾 界面美化 ...
- 关于Core里的 StartUp里的方法的理解。
public class Startup { public Startup(IConfiguration configuration) { Configuration = configuration; ...
- SQLite 在 Android 的应用
Android提供了创建和使用SQLite数据库的API(Application Programming Interface,应用程序编程接口). 在Android系统中,主要由类SQLiteData ...
- XML知识总结
1.XML概念及作用? XML( eXtensible Markup Language,可扩展标记语言)是一种简单的数据存储语言 作用:用来存储和交换数据 无法描述页面的排版和显示形式 2.XML和X ...
- Hadoop多节点Cluster
Hadoop多节点集群规划 服务起名称 内网IP HDFS YARN master 192.168.1.155 NameNode ResourceManager slave1 192.168.1.11 ...