zoukankan      html  css  js  c++  java
  • P3378 【模板】堆

    题目描述

    如题,初始小根堆为空,我们需要支持以下3种操作:

    操作1: 1 x 表示将x插入到堆中

    操作2: 2 输出该小根堆内的最小数

    操作3: 3 删除该小根堆内的最小数

    输入输出格式

    输入格式:
    第一行包含一个整数N,表示操作的个数

    接下来N行,每行包含1个或2个正整数,表示三种操作,格式如下:

    操作1: 1 x

    操作2: 2

    操作3: 3

    输出格式:
    包含若干行正整数,每行依次对应一个操作2的结果。

    输入输出样例

    输入样例#1: 复制
    5
    1 2
    1 5
    2
    3
    2
    输出样例#1: 复制
    2
    5
    说明

    时空限制:1000ms,128M

    数据规模:

    对于30%的数据:N<=15

    对于70%的数据:N<=10000

    对于100%的数据:N<=1000000(注意是6个0。。。不过不要害怕,经过编者实测,堆是可以AC的)

    样例说明:

    故输出为2、5

    code:

    #include <cstdio>
    const int maxn=1000005;
    int n,heap[maxn],sz,opt,num;
    inline void read(int &n){
        n=0;
        char ch=getchar();
        while(ch<'0' || ch>'9') ch=getchar();
        do{
            n=n*10+ch-'0';
            ch=getchar();
        }while(ch>='0' && ch<='9');
        return;
    }
    void push(int x){
        int i=sz++;
        while(i>0){
            int p=(i-1)>>1;
            if(heap[p]<=x) break;
            heap[i]=heap[p];
            i=p;
        }
        heap[i]=x;
        return;
    }
    int pop(){
        int ans=heap[0];
        int x=heap[--sz];
        int i=0;
        while(((i<<1)+1)<sz){
            int a=(i<<1)+1;
            int b=a+1;
            if(b<sz && heap[b]<heap[a]) a=b;
            if(heap[a]>=x) break;
            heap[i]=heap[a];
            i=a;
        }
        heap[i]=x;
        return ans;
    }
    int main(){
        read(n);
        for(int i=1;i<=n;i++){
            read(opt);
            if(opt==1){
                read(num);
                push(num);
            }
            if(opt==2) printf("%d
    ",heap[0]);
            if(opt==3) pop();
        }    
        return 0;
    }
    版权声明:本文为博主原创文章,未经博主允许不得转载。 博主:https://www.cnblogs.com/Menteur-Hxy/
  • 相关阅读:
    第三周学习进度
    四则运算之结对开发
    第二周学习进度
    单元测试
    构建之法阅读笔记03
    本周学习进度
    四则运算三
    构建之法阅读笔记02
    本周学习进度
    按照Right-BICEP要求设计的测试用例
  • 原文地址:https://www.cnblogs.com/Menteur-Hxy/p/9248035.html
Copyright © 2011-2022 走看看