zoukankan      html  css  js  c++  java
  • poj1442Black Box(优先队列)

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

    题意很难懂  题挺巧妙的 建立两个优先队列 一个从小到大 另一个从大到小 随时更新两队中的值 使其为1~i 和 i+1~m

    View Code
     1 #include <iostream>
     2 #include<cstdio>
     3 #include<cstring>
     4 #include<queue>
     5 using namespace std;
     6 int num[30010],op[30010];
     7 int main()
     8 {
     9     int n,m,i,j,k,g;
    10     while(cin>>m>>n)
    11     {
    12         priority_queue <int> q1;
    13         priority_queue<int, vector<int>, greater<int> > q2;
    14         for(i = 1; i <= m ; i++)
    15            cin>>num[i];
    16         for(i = 1; i <= n ; i++)
    17             cin>>op[i];
    18         op[0] = 0;g=0;
    19         for(i = 1; i <= n ; i++)
    20         {
    21             k = op[i]-op[i-1];
    22             for(j = 1; j <= k ; j++)
    23             {
    24                 g++;
    25                 q2.push(num[g]);
    26                 if(!q1.empty()&&q1.top()>q2.top())//把第i小的值放入q2中 使其始终为对头元素
    27                 {
    28                     q1.push(q2.top());
    29                     q2.pop();
    30                     q2.push(q1.top());
    31                     q1.pop();
    32                 }
    33             }
    34             cout<<q2.top()<<endl;
    35             q1.push(q2.top());
    36             q2.pop();
    37         }
    38     }
    39     return 0;
    40 }
  • 相关阅读:
    Ⅲ:作业
    Ⅱ:python入门
    Auth模块
    django中间件
    Django的cookie以及session
    form组件
    Django Ajax
    Django模板层3和ajax初始
    聚合/分组 查询 事务
    Django ORM常用模块
  • 原文地址:https://www.cnblogs.com/shangyu/p/2873187.html
Copyright © 2011-2022 走看看