Black Box POJ1442
DescriptionOur Black Box represents a primitive database. It can save an integer array and has a special i variable. At the initial moment Black Box is empty and i equals 0. This Black Box processes a sequence of commands (transactions). There are two types of transactions:
ADD (x): put element x into Black Box; Let us examine a possible sequence of 11 transactions: Example 1 N Transaction i Black Box contents after transaction Answer It is required to work out an efficient algorithm which treats a given sequence of transactions. The maximum number of ADD and GET transactions: 30000 of each type. Let us describe the sequence of transactions by two integer arrays: 1. A(1), A(2), ..., A(M): a sequence of elements which are being included into Black Box. A values are integers not exceeding 2 000 000 000 by their absolute value, M <= 30000. For the Example we have A=(3, 1, -4, 2, 8, -1000, 2). 2. u(1), u(2), ..., u(N): a sequence setting a number of elements which are being included into Black Box at the moment of first, second, ... and N-transaction GET. For the Example we have u=(1, 2, 6, 6). The Black Box algorithm supposes that natural number sequence u(1), u(2), ..., u(N) is sorted in non-descending order, N <= M and for each p (1 <= p <= N) an inequality p <= u(p) <= M is valid. It follows from the fact that for the p-element of our u sequence we perform a GET transaction giving p-minimum number from our A(1), A(2), ..., A(u(p)) sequence. InputInput contains (in given order): M, N, A(1), A(2), ..., A(M), u(1), u(2), ..., u(N). All numbers are divided by spaces and (or) carriage return characters.
OutputWrite to the output Black Box answers sequence for a given sequence of transactions, one number each line.
Sample Input 7 4 Sample Output 3 Source |
题意:
给一系列数字,给出前k个数字中第i大的数字,i从1->m;
题解:
维护一个从大到小的优先队列和一个从小到大的,大顶堆中存放的是前i-1个数字的最小值,但是会时时更新,小顶堆中存放的是当前的最小值
此处记录一下改变优先队列的大小顺序的方法,
1,首先优先队列默认从大到小,大的在顶
2,从小到大。
priority_queue<int,vector<int>,greater<int> >//这样便是从小到大
priority_queue< int,vector<int>,less<int> > //大->小
3,如果是结构体
struct number1
{
int x;
bool operator < (const number1 &a) const//只有 < 这个符号
{
return x>a.x;//小值优先 //反之大值优先
}
};
//#include <bits/stdc++.h>
#include <cstdio>
#include <queue>
using namespace std;
const int MAXN=30010;
priority_queue<int>big;
priority_queue<int,vector<int>,greater<int> >mi; int a[MAXN],b[MAXN];
int main()
{
int n,m;
scanf("%d%d",&n,&m);
for (int i = 0; i <n ; ++i) {
scanf("%d",&a[i]);
}
int op;
int k=0;
for (int i = 0; i <m ; ++i) {
scanf("%d",&op);
while(k<op)
{
mi.push(a[k]);
if(!big.empty()&&mi.top()<big.top())//大顶堆维护前k-1的最小值,小顶堆维护当前除了前k-1个最小值的最小值。
{
int t;
t=big.top();
big.pop();
big.push(mi.top());
mi.pop();
mi.push(t);
}
k++;
}
printf("%d\n",mi.top());//需要把当前的最小值发放入到大顶堆中
big.push(mi.top());
mi.pop();
} return 0;
}
Black Box POJ1442的更多相关文章
- 【POJ1442】【Treap】Black Box
Description Our Black Box represents a primitive database. It can save an integer array and has a sp ...
- poj-1442 Black Box(Treap)
题目链接: Black Box 题意: 给一个序列,m个询问,每个询问是求前x个数中的第i小是多少; 思路: Treap的入门题目;Treap能实现STL的set实现不了的功能,如名次树(rank t ...
- POJ-1442 Black Box,treap名次树!
Black Box 唉,一天几乎就只做了这道题,成就感颇低啊! 题意:有一系列插入查找操作,插入每次 ...
- 【poj1442】Black Box
Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 10890 Accepted: 4446 Description Our ...
- poj1442 Black Box
The Black Case 好啊! 首先,读题很艰难... 读完题,发现是求第k小的数,那么我们用splay水过对顶堆水过即可. #include <cstdio> #include & ...
- POJ1442:Black Box
浅谈堆:https://www.cnblogs.com/AKMer/p/10284629.html 题目传送门:http://poj.org/problem?id=1442 用对顶堆维护第\(k\)小 ...
- POJ1442 Black Box 堆
用大根堆和小根堆分别存放前$i-1$大的元素前$k-i$小的元素. 将当前序列的元素压入最小堆,如果最小堆的最小数大于最大堆的最大数则进行交换,保证最大堆中的所有数小于最小堆. 因为$i$值每进行一次 ...
- A - Black Box 优先队列
来源poj1442 Our Black Box represents a primitive database. It can save an integer array and has a spec ...
- Virtual Box配置CentOS7网络(图文教程)
之前很多次安装CentOS7虚拟机,每次配置网络在网上找教程,今天总结一下,全图文配置,方便以后查看. Virtual Box可选的网络接入方式包括: NAT 网络地址转换模式(NAT,Network ...
随机推荐
- HTML5制作新年贺春
<!DOCTYPE html> <html> <head> <meta charset='UTF-8'/> <meta name='viewpor ...
- sharepoint2007就地升级2010系列(五)升级到sharepoint2010
---恢复内容结束--- 大家下午好 今天我们来完成最后一步,sharepoint2007升级2010.其实我反倒没有那么紧张了,因为我最担心的数据库升级,已经过了. OK,话不多说,让我们直接开始吧 ...
- 用代码初始化AE控件许可
当AE二次开发与其他平台一起使用的时候,有时候会不方便加LicenseControl控件,需要用代码初始化许可: 在构造函数中初始化许可: public Form1() { InitializeCom ...
- nProtect APPGuard安卓反外挂分析
工具与环境: IDA7.0 JEB2.2.5 Nexus 5 Android 4.4 目录: 一:app简单分析与java层反编译 二: compatible.so反调试与反反调试 三: compat ...
- DirectX HLSL 内置函数
Intrinsic Functions (DirectX HLSL) The following table lists the intrinsic functions available in HL ...
- List之Sort使用
void TestListSort(){ List<string> st = new List<string> (); st.Add ("abcd"); s ...
- Struts2_BBS2009小实战
Struts2_BBS2009准备:链接: http://pan.baidu.com/s/1nvTZz9R 密码: 875a ext3.0_直接部署运行:链接: http://pan.baidu.co ...
- SPICE简史
如今每一天都有不知其数的半导体芯片设计公司与设计验证工程师,在用着电路仿真软件SPICE.SPICE广泛应用在仿真模拟电路(例如运放Op Amp,能隙基准稳压电源Bandgap Reference,数 ...
- Linux安装 NTFS 支持
my system kernel Version is 2.6.18-128.el5 在这个地址下载了 kernel-module-ntfs-2.6.18-128.el5-2.1.27-0.rr.10 ...
- Docker cgroup.procs no space left on device
环境:centos6 运行docker 时 错误提示: System error: write /sys/fs/cgroup/docker/01f5670fbee1f6687f58f3a943b1e1 ...