题目: http://poj.org/problem?id=1442

开始用二叉排序树写的,TLE了,改成优先队列,过了。。

两个版本都贴一下吧,赚稿费。。

 #include <stdio.h>
#include <queue>
#include <vector>
using namespace std;
priority_queue<int>qmax;
priority_queue<int, vector<int>, greater<int> >qmin; int add[]; int main()
{
int n, m, last = , get;
scanf("%d %d", &n, &m);
for(int i = ; i < n; i++)
scanf("%d", &add[i]);
for(int i = ; i <= m; i++)
{
scanf("%d", &get);
while(last < get)
qmax.push(add[last++]);
while(qmax.size() >= i)
{
qmin.push(qmax.top());
qmax.pop();
}
qmax.push(qmin.top());
qmin.pop();
printf("%d\n", qmax.top());
}
return ;
}

优先队列AC

 #include <stdio.h>
#include <stdlib.h> struct node
{
int data;
struct node *left, *right;
};
int add[], cnt; void build(struct node *&p, int k)
{
if(p == NULL)
{
p = (struct node *)malloc(sizeof(struct node));
p->data = k;
p->left = p->right = NULL;
return;
}
if(p->data >= k)
build(p->left, k);
else build(p->right, k);
} void seek(struct node *p, int x)
{
if(p == NULL || cnt > x)return;
seek(p->left, x);
if(cnt++ == x)
printf("%d\n", p->data);
seek(p->right, x);
} int main()
{
int n, m, last = , get;
scanf("%d %d", &n, &m);
struct node *root = NULL;
for(int i = ; i < n; i++)
scanf("%d", &add[i]);
for(int i = ; i <= m; i++)
{
scanf("%d", &get);
while(last < get)
build(root, add[last++]);
cnt = ;
seek(root, i);
}
return ;
}

二叉排序树TLE

POJ 1442 Black Box 堆的更多相关文章

  1. [ACM] POJ 1442 Black Box (堆,优先队列)

    Black Box Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 7099   Accepted: 2888 Descrip ...

  2. POJ 1442 Black Box treap求区间第k大

    题目来源:POJ 1442 Black Box 题意:输入xi 输出前xi个数的第i大的数 思路:试了下自己的treap模版 #include <cstdio> #include < ...

  3. POJ 1442 Black Box(优先队列)

    题目地址:POJ 1442 这题是用了两个优先队列,当中一个是较大优先.还有一个是较小优先. 让较大优先的队列保持k个.每次输出较大优先队列的队头. 每次取出一个数之后,都要先进行推断,假设这个数比較 ...

  4. poj 1442 Black Box(堆 优先队列)

    题目:http://poj.org/problem?id=1442 题意:n,m,分别是a数组,u数组的个数,u[i]w为几,就加到a几,然后输出第i 小的 刚开始用了一个小顶堆,超时,后来看了看别人 ...

  5. 数据结构(堆):POJ 1442 Black Box

    Black Box Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 10658   Accepted: 4390 Descri ...

  6. poj 1442 Black Box(优先队列&Treap)

    题目链接:http://poj.org/problem?id=1442 思路分析: <1>维护一个最小堆与最大堆,最大堆中存储最小的K个数,其余存储在最小堆中; <2>使用Tr ...

  7. POJ 1442 Black Box

    第k大数维护,我推荐Treap..谁用谁知道....                                                           Black Box Time ...

  8. POJ 1442 Black Box -优先队列

    优先队列..刚开始用蠢办法,经过一个vector容器中转,这么一来一回这么多趟,肯定超时啊. 超时代码如下: #include <iostream> #include <cstdio ...

  9. 优先队列 || POJ 1442 Black Box

    给n个数,依次按顺序插入,第二行m个数,a[i]=b表示在第b次插入后输出第i小的数 *解法:写两个优先队列,q1里由大到小排,q2由小到大排,保持q2中有i-1个元素,那么第i小的元素就是q2的to ...

随机推荐

  1. MySQL 复制+快照恢复误删除操作实验测试

    下面假定2个场景: 场景1:主从架构,没有延迟,某DBA误操作:drop database [复制+快照:在线备份]场景2:存在不确定性或者风险性较大的操作,如升级测试,大表变更[啥事都在快照上折腾, ...

  2. Exception in thread "main" java.lang.NoClassDefFoundError: com/google/common/collect/Maps

    加入jar包 http://jarfiles.pandaidea.com/google.collect.html google-collect-1.0.jar.zip ( 504.8 KB )

  3. spring scheduler相同时间内执行两次的问题

    在网上找了大片文章,有的说是上下文被夹在两次的问题,可我配置scheduler的上下文着实没被夹在多次 之后才在网上找到,虽然还不明白原理,但是还是贴出来分享下

  4. GROUP BY,WHERE,HAVING之间的差别和使用方法

    having子句与where有类似之处但也有差别,都是设定条件的语句.在查询过程中聚合语句(sum,min,max,avg,count)要比having子句优先运行.而where子句在查询过程中运行优 ...

  5. sqrt 源代码

    stap -v -e 'probe process("/usr/local/mysql56/bin/mysqld").function("*@/usr/src/mysql ...

  6. 鼠标移动事件--JavaScript

    鼠标移动事件 <html> <head> <title>鼠标移动事件</title> </head> <style type=&quo ...

  7. Mac系统Safari浏览器启动无图模式

    有的时候我们用热点上网,图片的出现会消耗大量的流量,这时候就需要启动无图模式不加载图片. 步骤:启动Safari浏览器->偏好设置->高级->勾选“在菜单栏中显示“开发”菜单”-&g ...

  8. [转]Form中控制Tab画布不同标签间切换的方法

    转自:http://yedward.net/?id=68 Form中一般常用的画布类型包括content.stacked.tab这三种,其实content类型的画布是每一个form都必须有的,而且只能 ...

  9. linux安装java环境

    在linux下安装JDK如下: 第一步:查看Linux自带的JDK是否已安装 (1)查看已经安装的jdk: [root@web-server ~]# rpm -qa|grep jdk ← 查看jdk的 ...

  10. 完全用LINUX工作

    http://blog.csdn.net/e6894853/article/details/7881091 下面列出我常用的一些 Linux 程序.一个列表里可能有很多,那是为了方便你来选择,我列出了 ...