zoukankan      html  css  js  c++  java
  • Black Box

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

     1 #include<cstdio>
     2 #include<algorithm>
     3 #include<queue>
     4 #define MAXN 30010
     5 long long a[MAXN],b[MAXN];
     6 using namespace std;
     7 int main()
     8 {
     9     priority_queue<long long ,vector<long long >,greater<long long> >q;  //从小到大排列  小根堆
    10     priority_queue<long long ,vector<long long>,less<long long> >p;// 从大到小排列 大根堆
    11     int n,m;
    12     long long t;
    13     scanf("%d%d",&n,&m);
    14     for(int i=0;i<n;i++)
    15         scanf("%lld",&a[i]);
    16     for(int i=0;i<m;i++)
    17         scanf("%lld",&b[i]);
    18     int tt=0;
    19     for(int j=0;j<m;j++)
    20     {
    21         for( int i=tt;i<b[j];i++) 
    22         {
    23             q.push(a[i]);
    24             if(!p.empty()&&q.top()<p.top())  //对每一步add之后操作
    25             {
    26                 t=q.top();
    27                 q.pop();
    28                 q.push(p.top());
    29                 p.pop();
    30                 p.push(t);
    31             }
    32         }
    33         tt=b[j];
    34         printf("%lld
    ",q.top());
    35         p.push(q.top());
    36         q.pop();
    37     }
    38     return 0;
    39 }
    View Code

     另外的做法,这是我用堆写的。

      1 #include<cstdio>
      2 #include<algorithm>
      3 #include<cstring>
      4 #define MAXN 60010
      5 long long a[MAXN],b[MAXN],c[MAXN],d[MAXN];
      6 using namespace std;
      7 int len=0,len1=0;
      8 void up1(int n)
      9 {
     10     a[++len]=n;
     11     int p=len;
     12     int q=p/2;
     13     long long m=a[p];
     14     while(q>=1&&m<a[q])
     15     {
     16         a[p]=a[q];
     17         p=q;
     18         q=p/2;
     19     }
     20     a[p]=m;
     21 }
     22 void up2(int n)
     23 {
     24     b[++len1]=n;
     25     int p=len1;
     26     int q=p/2;
     27     long long m=b[p];
     28     while(q>=1&&m>b[q])
     29     {
     30         b[p]=b[q];
     31         p=q;
     32         q=p/2;
     33     }
     34     b[p]=m;
     35 }
     36 void down1(int p)
     37 {
     38     a[1]=a[len--];
     39     int q=p*2;
     40     long long m=a[p];
     41     while(q<=len)
     42     {
     43         if(q<len&&a[q]>a[q+1])
     44             q++;
     45         if(a[q]>=m) break;
     46         else
     47         {
     48             a[p]=a[q];
     49             p=q;
     50             q=p*2;
     51         }
     52     }
     53     a[p]=m;
     54 }
     55 int pop1()
     56 {
     57     long long r=a[1];
     58     return r;
     59 }
     60 int pop2()
     61 {
     62     long long  r=b[1];
     63     return r;
     64 }
     65 void down2(int p)
     66 {
     67     b[1]=b[len1--];
     68     int q=p*2;
     69     long long m=b[p];
     70     while(q<=len1)
     71     {
     72         if(q<len1&&b[q]<b[q+1])
     73             q++;
     74         if(b[q]<=m) break;
     75         else
     76         {
     77             b[p]=b[q];
     78             p=q;
     79             q=p*2;
     80         }
     81     }
     82     b[p]=m;
     83 }
     84 
     85 int main()
     86 {
     87     int n,m;
     88     memset(a,0,sizeof(a));
     89     memset(b,0,sizeof(b));
     90     scanf("%d%d",&n,&m);
     91     for(int i=0; i<n; i++)
     92         scanf("%lld",&c[i]);
     93     for(int j=0; j<m; j++)
     94         scanf("%lld",&d[j]);
     95     int tt=0;
     96     for(int i=0; i<m; i++)
     97     {
     98         for(int j=tt; j<d[i]; j++)
     99         {
    100             up1(c[j]);
    101             if(len1!=0&&a[1]<b[1])
    102             {
    103                 int t=pop1();
    104                 down1(1);
    105                 up1(pop2());
    106                 down2(1);
    107                 up2(t);
    108             }
    109         }
    110         tt=d[i];
    111         printf("%lld
    ",a[1]);
    112         up2(pop1());
    113         down1(1);
    114     }
    115     return 0;
    116 }
    View Code
  • 相关阅读:
    select poll使用
    蓝缘管理系统第二个版本号开源了。springMVC+springSecurity3.x+Mybaits3.x 系统
    Map生成器 map适配器如今能够使用各种不同的Generator,iterator和常量值的组合来填充Map初始化对象
    as3.0 interface接口使用方法
    javascript异步延时载入及推断是否已载入js/css文件
    KMP算法具体解释(转)
    Codeforces #250 (Div. 2) C.The Child and Toy
    与机房收费系统重相见
    /bin/bash: line 0: fg: no job control一般解决方法
    oracle db打one-off-patch 一例
  • 原文地址:https://www.cnblogs.com/fanminghui/p/3236575.html
Copyright © 2011-2022 走看看