码迷,mamicode.com
首页 > 其他好文 > 详细

poj 1442 Black Box

时间:2014-10-22 00:26:42      阅读:223      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   color   io   os   ar   for   sp   

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

 

思路:

维护一个最小堆与最大堆,最大堆中存储最小的K个数,其余存储在最小堆中

 

代码:

#include<iostream>
#include<queue>
using namespace std;

struct cmp1
{
     bool operator() ( const int a, const int b )
     { return a > b; }
};

struct cmp2
{
     bool operator()( const int a, const int b )
     { return a < b; }
};

priority_queue<int,vector<int>,cmp1>MaxHeap;
priority_queue<int,vector<int>,cmp2>MinHeap;
int a[30000];

int main()
{
    int m, n, i, K;
    int Count = 0, Tmp;
    
    scanf( "%d%d", &m, &n );
    for ( i = 0; i < m; i++ )
        scanf( "%d", &a[i] );
    
    for( i = 0; i < n; i++ )
    {
        scanf( "%d", &K );
        while ( Count < K )
        {
            MaxHeap.push(a[Count]);
            if( !MinHeap.empty() && MaxHeap.top() < MinHeap.top() )
            {
                Tmp = MaxHeap.top();
                MaxHeap.pop();
                MaxHeap.push( MinHeap.top() );
                MinHeap.pop();
                MinHeap.push(Tmp);
            }
            Count++;
        }
        printf( "%d\n", MaxHeap.top() );
        MinHeap.push( MaxHeap.top() );
        MaxHeap.pop();
    }
}

 

poj 1442 Black Box

标签:style   blog   http   color   io   os   ar   for   sp   

原文地址:http://www.cnblogs.com/tallisHe/p/4041833.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!