poj1442——Black Box
2011-03-14 09:26
274 查看
题目很难理解:向一个容器中不断的添加n个数,然后有一系列查询,每次查询第i小的数并进行输出.
刚开始就一个最小堆,果断超时了。
后来,搜了报告,原来,是用最大与最小堆之间动态维护。保证前i小个数一定留在max堆里。
话说,stl是好东西,代码简洁。但比手动的慢。优缺点同样明显。
http://archive.cnblogs.com/a/1900652/-------->手动维护堆!
刚开始就一个最小堆,果断超时了。
后来,搜了报告,原来,是用最大与最小堆之间动态维护。保证前i小个数一定留在max堆里。
话说,stl是好东西,代码简洁。但比手动的慢。优缺点同样明显。
http://archive.cnblogs.com/a/1900652/-------->手动维护堆!
#include<iostream> #include<cstdio> #include<queue> using namespace std; #define maxn 30003 int A[maxn],u[maxn]; priority_queue<int ,vector<int >,greater<int >>minheap; priority_queue<int ,vector<int >,less<int >>maxheap; int main() { int i,j; int m,n,flag; cin>>m>>n; for(i=1;i<=m;i++) scanf("%d",&A[i]); for(i=1;i<=n;i++) scanf("%d",&u[i]); j=1;u[0]=0;int k; for(i=1;i<=n;i++) { while(j<=u[i]) { maxheap.push (A[j]); j++; } for(k=u[i]-u[i-1];k>0;k--) { minheap.push (maxheap.top ()); maxheap.pop (); } printf("%d/n",minheap.top ()); maxheap.push (minheap.top ()); minheap.pop (); } return 0; }
相关文章推荐
- poj1442——Black Box(优先队列)
- [ACM] POJ 1442 Black Box (堆,优先队列)
- POJ 1442 Black Box【treap模板】
- POJ 1442 Black Box
- 【POJ 1442】 Black Box
- POJ-1442-Black Box
- POJ 1442 Black Box
- 【POJ1442】 - - Black Box(优先队列)
- POJ 1442 Black Box
- POJ-1442-Black Box
- Black Box poj 1442 优先队列
- POJ 1442 Black Box(【Treap】求动态区间第k大)
- poj 1442 Black Box
- poj 1442.Black Box
- POJ 1442 Black Box
- POJ 1442 Black Box treap裸题 动态求整个序列的前k大数
- POJ 1442 Black Box
- poj-1442 Black Box(Treap)
- POJ - 1442 Black Box解题报告(求第k小的数 堆)
- POJ 1442 Black Box 堆