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

    P3378 【模板】堆

      • 160通过
      • 275提交
    • 题目提供者HansBug
    • 标签
    • 难度普及-

      讨论  题解  

    最新讨论

    • 经实际测试 堆的数组开3000…
    • 题目有个问题
    • 为什么这个按课本堆标准打的…

    题目描述

    如题,初始小根堆为空,我们需要支持以下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

    堆的话直接用优先队列就可以了.

    #include <cstdio>
    #include <cstring>
    #include <iostream>
    #include <algorithm>
    #include <queue>
    
    using namespace std;
    
    int n;
    priority_queue <int, vector<int>, greater<int> >q;
    
    int main()
    {
        scanf("%d", &n);
        for (int i = 1; i <= n; i++)
        {
            int id;
            scanf("%d", &id);
            if (id == 1)
            {
                int x;
                scanf("%d", &x);
                q.push(x);
            }
            if (id == 2)
                printf("%d
    ", q.top());
            if (id == 3)
                q.pop();
        }
    
    
        return 0;
    }
  • 相关阅读:
    leetcode 279. Perfect Squares
    leetcode 546. Remove Boxes
    leetcode 312. Burst Balloons
    leetcode 160. Intersection of Two Linked Lists
    leetcode 55. Jump Game
    剑指offer 滑动窗口的最大值
    剑指offer 剪绳子
    剑指offer 字符流中第一个不重复的字符
    leetcode 673. Number of Longest Increasing Subsequence
    leetcode 75. Sort Colors (荷兰三色旗问题)
  • 原文地址:https://www.cnblogs.com/zbtrs/p/5990037.html
Copyright © 2011-2022 走看看