zoukankan      html  css  js  c++  java
  • poj 1442 Black Box

    好久没刷题了,脑子都锈掉了。这题是用优先队列做的,而且是STL里的。STL里的priority_queue默认是大堆,你可以理解为递减数列。如果要用小堆需要一点参数,我只记得一个简单些的方法:priority_queue<T, vector<T>, greater<T> >,T表示数据类型,这样就是一个小堆了。做这题时我“参考”了别人的代码,不过原版的注释写得很混乱,不知道是不是用来忽悠人的。以下是代码:

     1 #include <iostream>
     2 #include <queue>
     3 using namespace std;
     4 int A[30010],u[30010];
     5 int main()
     6 {
     7     int m,n,i,j,t;
     8     while(cin>>m>>n)
     9     {
    10         priority_queue <int, vector<int> > small;
    11         priority_queue <int, vector<int>,greater<int> > big;
    12         for(i = 0; i < m; i++)
    13             cin>>A[i];
    14         for(j = 0; j < n; j++)
    15             cin>>u[j];
    16         j = 0;
    17         for(i = 0; i < m && j < n; i++)
    18         {
    19             if(small.empty())
    20                 big.push(A[i]);
    21             else if(A[i] < small.top())
    22             {
    23                 t = small.top();
    24                 small.pop();
    25                 big.push(t);
    26                 small.push(A[i]);
    27             }
    28             else big.push(A[i]);
    29             while(u[j] == i+1)
    30             {
    31                 j++;
    32                 t = big.top();
    33                 big.pop();
    34                 cout<<t<<endl;
    35                 small.push(t);
    36             }
    37         }
    38     }
    39     return 0;
    40 }
  • 相关阅读:
    INSERT
    jQuery选择器
    工厂模式
    快乐的Linux命令行
    Linux常用命令与基本概念
    RAC 集群更换IP
    RMAN-03009 ORA-19504 ORA-27038
    Redhat 6.4_联网 yum 配置
    /dev/sda3: UNEXPECTED INCONSISTENCY; RUN fsck MANUALLY
    nginx安装笔记
  • 原文地址:https://www.cnblogs.com/lzxskjo/p/2585449.html
Copyright © 2011-2022 走看看