zoukankan      html  css  js  c++  java
  • 动态数组第k小,Poj(1442)

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

    本来想复制一下,然后直接sort,结果T了。

    在网上看了一下,有用两个队列做的,想了半天,没看懂什么意思。后来模拟一边,总算是懂了。

    这里,将要输出的第k小的数存在最小堆中,输出,压入到最大堆中(最大堆是用来存第k小之前的数,更小),循环操作中,要是发现,压人到最小堆中的数,要是比最大堆中的头结点要小,当然要交换啦。

    #include <stdio.h>
    #include <string.h>
    #include <queue>
    
    using namespace std;
    
    const int maxn = 30005;
    int a[maxn];
    
    int main()
    {
        int m,n;
        priority_queue<int ,vector<int>,less<int> >Q;    ///最大堆
        priority_queue<int ,vector<int>,greater<int> > QQ;    ///最小堆
        scanf("%d%d",&m,&n);
        for(int i=1;i<=m;i++)
            scanf("%d",&a[i]);
    
        int be = 1;
        for(int i=1;i<=n;i++)
        {
            int b;
            scanf("%d",&b);
    
            for(int j=be;j<=b;j++)
            {
                QQ.push(a[j]);
                if(!Q.empty()&&Q.top()>QQ.top())
                {
                    int tmp;
                    tmp = Q.top();
                    Q.pop();
                    Q.push(QQ.top());
                    QQ.pop();
                    QQ.push(tmp);
                }
            }
            be=b+1;
            printf("%d
    ",QQ.top());
            Q.push(QQ.top());
            QQ.pop();
        }
        return 0;
    }
  • 相关阅读:
    JS 正则查找与替换
    MySQL 批量插入值
    Python/Django 批量下载Excel
    Python/Django 下载Excel2007
    Python/Django 下载Excel2003
    Python3安装Scrapy
    服务器响应状态码
    细说同域-同父域-跨域
    细说Ajax跨域
    PostgreSQL学习
  • 原文地址:https://www.cnblogs.com/TreeDream/p/5615266.html
Copyright © 2011-2022 走看看