luogu P1801 黑匣子_NOI导刊2010提高(06)

原创 2018年04月16日 08:34:21

题目传送门:https://www.luogu.org/problemnew/show/P1801#sub



题意:

有n个数依次读入,在第x个数被读入后会有一个输出操作,表示输出当前数列第i大的数,然后i++(此时的i是下一次输出操作的i)。



思路:

套路题,不细讲。

开两个堆,大根堆维护1~i-1小的数,小根堆维护剩下个数,每一次插入到小根堆里;对于输出操作,我们只需输出小根堆的堆顶,然后,因为i++,所以我们就要将小根堆的堆顶放入大根堆。注意,如果我们发现当前加入小根堆时的堆顶比大根堆的堆顶大,就交换它们(因为大根堆始终存的是1~i-1小的数)。



代码:

#include<cstdio>
#include<queue>
using namespace std;
priority_queue<int,vector<int>,greater<int> > a;
priority_queue<int> b;
	int n,m;
	int p[300000],d[300000];
int main()
{
	int x;
	scanf("%d %d",&n,&m);
	for(int i=1;i<=n;i++)
		scanf("%d",&p[i]);
	for(int i=1;i<=m;i++)
		scanf("%d",&d[i]);
	int l1=1,l2=0;
	for(int i=1;i<=n;i++)
	{
		a.push(p[i]);
		l1++;
		if(l2)
		{
			int t1=a.top(),t2=b.top();
			if(t1<t2)
			{
				a.pop();
				b.pop();
				a.push(t2);
				b.push(t1);
			}
		}
		l2++;
		while(l2<=n&&i==d[l2])
		{
			b.push(a.top());
			a.pop();
			printf("%d\n",b.top());
			l1--;
			l2++;
		}
		l2--;
	}
}

2002年考研政治大纲各部分知识点变化情况

2002年考研政治大纲各部分知识点变化情况2001年05月29日16:00:40 中国教育热线   本文为2002年政治考试大纲修订说明部分   2002年全国硕士研究生入学考试政治理论考试大纲在20...
  • stanely
  • stanely
  • 2001-06-04 21:30:00
  • 540

刷题记录-luoguP1801 黑匣子_NOI导刊2010提高(06)

本题主要就是找第k小的数 可以建一棵二叉搜索树,设节点左子树的个数为size,则有: 如果k==size+1,那么显然这个节点就是第k小的数 如果k 如果k>size+1,那么k肯定在右子树中...
  • w_h_h_
  • w_h_h_
  • 2017-07-12 22:45:20
  • 85

洛谷 P1801 黑匣子_NOI导刊2010提高(06)

题目描述Black Box是一种原始的数据库。它可以储存一个整数数组,还有一个特别的变量i。最开始的时候Black Box是空的.而i等于0。这个Black Box要处理一串命令。命令只有两种:ADD...
  • Sunny_ZRY
  • Sunny_ZRY
  • 2017-02-23 21:21:24
  • 175

LUOGUP1801 黑匣子_NOI导刊2010提高(06)

堆排
  • superdata999
  • superdata999
  • 2017-12-15 00:59:21
  • 66

洛谷 P1801 [NOI导刊2010提高(06)] 黑匣子

优先队列(堆?)
  • SenyeLicone
  • SenyeLicone
  • 2016-08-13 20:34:10
  • 476

洛谷1801 黑匣子_NOI导刊2010提高(06) 【好题】

洛谷1801 黑匣子_NOI导刊2010提高(06) 本题地址: http://www.luogu.org/problem/show?pid=1801题目描述 Black Box是一种原始的数据库...
  • huzujun
  • huzujun
  • 2015-10-28 16:11:13
  • 1067

|洛谷|NOI导刊|堆|黑匣子_NOI导刊2010提高(06)

http://www.luogu.org/problem/show?pid=1801 开两个堆,一个大根堆维护1~i-1小元素,一个小根堆维护i~n小元素 添加元素时,如果元素小于大根堆堆顶,那么...
  • Darost
  • Darost
  • 2016-10-04 18:04:44
  • 358

洛谷 P1801 黑匣子_NOI导刊2010提高(06)

题目描述Black Box是一种原始的数据库。它可以储存一个整数数组,还有一个特别的变量i。最开始的时候Black Box是空的.而i等于0。这个Black Box要处理一串命令。 命令只有两种: ...
  • ypxrain
  • ypxrain
  • 2017-01-14 20:10:29
  • 294

黑匣子_NOI导刊2010提高(06)(对顶堆)

QAQ 要查询第k大的值,维护一个大根堆和一个小根堆,他们的队首元素一样,也就是说小根堆里的元素都比大根堆里的大。维护大根堆里有k个元素那么下次找答案时只需要输出小根堆的优先元素即可,然后再将小根堆...
  • qq_35914587
  • qq_35914587
  • 2017-03-17 16:03:24
  • 327

NOI导刊游记

现在的时间是:2016年2月10日01:03:10。正好是大年初三,我就随便写写吧…不知道为什么,以前从来没有想过写什么游记什么的,但有了博客就是想写…………虽然没人看吧2333去导刊的时间是1.28...
  • LOI_DQS
  • LOI_DQS
  • 2016-02-10 03:02:31
  • 1488
收藏助手
不良信息举报
您举报文章:luogu P1801 黑匣子_NOI导刊2010提高(06)
举报原因:
原因补充:

(最多只允许输入30个字)