POJ 1442 Black Box(堆||treap)

来源:互联网 发布:非苹果电脑安装mac os 编辑:程序博客网 时间:2024/06/06 19:54

想学treap的,结果发现这题用堆也能做。

用堆的写法:

#include <iostream>#include <cstdio>#include <cstring>#include <queue>#include <stack>#include <algorithm>#include <cmath>#include <map>#define LL long long#define DB doubleusing namespace std;priority_queue<int> quemx,quemi;const int N = 30009;const int INF = ~0u>>1;int A[N];int n,m;int v[N];int main(){    scanf("%d%d",&n,&m);    int a;    for(int i=1; i<=n; i++) scanf("%d",&A[i]);    for(int i=0; i<m; i++)    {        scanf("%d",&a);        v[a]++;    }    int c=1;    for(int i=1; i<=n; i++)    {        quemx.push(A[i]);        while((int)quemx.size()>c)        {            int t = quemx.top();            quemx.pop();            quemi.push(-t);        }        while(v[i])        {            int tmp = quemx.top();            printf("%d\n",tmp);            c++;            if(!quemi.empty())                tmp = -quemi.top(),quemi.pop(),quemx.push(tmp);            v[i]--;        }    }    return 0;}


不会treap。。



原创粉丝点击