Description

实现一棵Bernoulli树。实现下列操作:

  1. insert X,将整数X加入优先队列
  2. delete,将优先队列中最小值弹出
  3. min,输出最小值

初始优先队列为空。

Input Format

第一行含有一个正整数M(1<=M<=20000),代表总的操作数。

以下M行,每行一个操作。

Output Format

对于min操作,输出一个最小值,回车隔开。

Sample Input1

9
insert 6
insert 6
insert 4
delete
min
delete
insert 9
insert 3
min

Sample Output1

6
3

Limit

输入数据保证合法

#include <iostream>using namespace std;template<class Type>
class priorityQueue {public:priorityQueue() {int capacity = 10;array = new Type[capacity];maxSize = capacity;currentSize = 0;}priorityQueue(const Type data[], int size);~priorityQueue() {delete[]array;}void enQueue(const Type &x);Type deQueue();Type getHead() const {return array[1];}private:int currentSize;Type *array;int maxSize;void doubleSpace();void buildHeap();void percolateDown(int hole);
};template<class Type>
void priorityQueue<Type>::enQueue(const Type &x) {if (currentSize == maxSize - 1)doubleSpace();int hole = ++currentSize;for (; hole > 1 && x < array[hole / 2]; hole /= 2) {array[hole] = array[hole / 2];}array[hole] = x;
}template<class Type>
Type priorityQueue<Type>::deQueue() {Type minItem;minItem = array[1];array[1] = array[currentSize--];percolateDown(1);return minItem;
}template<class Type>
void priorityQueue<Type>::percolateDown(int hole) {int child;Type tmp = array[hole];for (; hole * 2 <= currentSize; hole = child) {child = hole * 2;if (child != currentSize && array[child + 1] < array[child])child++;if (array[child] < tmp) {array[hole] = array[child];} else { break; }}array[hole] = tmp;
}template<class Type>
void priorityQueue<Type>::buildHeap() {for (int i = currentSize / 2; i > 0; i--) {percolateDown(i);}
}template<class Type>
priorityQueue<Type>::priorityQueue(const Type *data, int size) :maxSize(size + 10), currentSize(size) {array = new Type[maxSize];for (int i = 0; i < size; i++) {array[i + 1] = data[i];}buildHeap();
}template<class Type>
void priorityQueue<Type>::doubleSpace() {Type *tmp = array;maxSize *= 2;array = new Type[maxSize];for (int i = 0; i <= currentSize; ++i) {array[i] = tmp[i];}delete[]tmp;
}int main() {int M = 0;int number = 0;char command[7] = {0};cin >> M;priorityQueue<int> b;for (int i = 0; i < M; ++i) {cin >> command;if (command[0] == 'i') {cin >> number;b.enQueue(number);}if (command[0] == 'm') {cout << b.getHead() << endl;}if (command[0] == 'd') {b.deQueue();}}return 0;
}

1215. bernoulli相关推荐

  1. 概率论中伯努利分布(bernoulli distribution)介绍及C++11中std::bernoulli_distribution的使用

    Bernoulli分布(Bernoulli distribution):是单个二值随机变量的分布.它由单个参数ø∈[0,1],ø给出了随机变量等于1的概率.它具有如下的一些性质: P(x=1)= ø ...

  2. R语言伯努利分布(Bernoulli distribution)函数(dbern, pbern, qbern rbern)实战

    R语言伯努利分布(Bernoulli distribution)函数(dbern, pbern, qbern & rbern)实战 目录

  3. BFS Sicily 1215: 脱离地牢

    1215.脱离地牢 Constraints Time Limit: 1 secs, Memory Limit: 32 MB Description 在一个神秘的国度里,年轻的王子Paris与美丽的公主 ...

  4. mysql 不能添加外键 1215_MySQL错误1215:无法添加外键约束

    我正在尝试将新模式转发工程到我的数据库服务器上,但是我不知道为什么会收到此错误.我试图在这里搜索答案,但是我发现的所有内容都说是将db引擎设置为Innodb或确保要用作外键的键是它们自己表中的主键.如 ...

  5. POJ-1707 Sum of powers bernoulli方程

    题目链接:http://poj.org/problem?id=1707 利用bernoulli方程来解决此题. 数学上,伯努利数Bn的第一次发现是与下述数列和的公式有关: 其中n为固定的任意正整数. ...

  6. mysql 1215_mysql执行带外键的sql文件时出现mysql ERROR 1215 (HY000): Cannot add foreign key constraint的解决...

    ERROR 1215 (HY000): Cannot add foreign key constraint 最近在建表时遇到了这个错误,然后找了下找到了解决办法,记录下: 本来是要建两张表: 出现下面 ...

  7. MySQL:错误代码1215 无法添加外键约束的解决思路

    环境说明: ※MySQL ver:5.7 当你需要添加外键约束的时候,却发现mysql报了个1215错误,一脸懵逼的找到这个博客,那你的问题可能就会得到解决. 解决思路 1.检查两个字段的数据类型是否 ...

  8. 信息学奥赛一本通(1215:迷宫)

    1215:迷宫 时间限制: 1000 ms         内存限制: 65536 KB 提交数: 29437     通过数: 8772 [题目描述] 一天Extense在森林里探险的时候不小心走入 ...

  9. 能够使用StringBuilder类的常用方法操纵字符串 1215

    能够使用StringBuilder类的常用方法操纵字符串 1215 01

最新文章

  1. numpy中计算矩阵数值的核心函数
  2. 1. ELK 之elasticsearch 简介、获取、安装
  3. 【渝粤教育】国家开放大学2018年春季 8664-21T文书档案管理 参考试题
  4. leetcode1442. 形成两个异或相等数组的三元组数目
  5. android显示多个网络图片不显示,Android显示网络图片实例
  6. templates是什么意思_什么?噪音可以用来降温做冰箱?
  7. 小D课堂 - 零基础入门SpringBoot2.X到实战_汇总
  8. (图论) Tarjan 算法
  9. matlab生成39码,LaTeX技巧357:MATLAB如何直接生成latex代码?
  10. Python编程快速上手----让繁琐的工作自动化(1. python编程基础)
  11. android手机diy,手把手教你如何DIY个性定制属于你的安卓手机浏览器
  12. 服务器升级微信公告,【更新公告】8月6日先锋服务器停服更新公告
  13. python大数据读取分析_python 大数据读取
  14. 升级pip 升级pip3的快速方法
  15. python数据质量检查
  16. Linux-hexdump命令调试event驱动—详解(13)
  17. 数据挖掘实战(6)——机器学习实现文本分类(今日头条tnews数据集)
  18. java 获取ftp 文件路径_java在浏览器上获取FTP读文件路径
  19. I2C总线及AT24C02读写
  20. 刘强东七千字内部信“京东是谁”:比错过机会更可怕的是机会主义

热门文章

  1. HTML+CSS+JavaScript制作520七夕情人节代码(烟花表白)
  2. SV--线程(semaphore)
  3. 爬虫实践(二)--掌阅书城
  4. [ Linux ] 如何查看内核 Kernel 版本(查多个Kernel的方法)
  5. Android中陀螺仪的使用
  6. 150家老字号将进故宫过大年 推介民族品牌
  7. AMD Athlon CPU 全系列回忆录
  8. java 图片旋转_Java实现图片旋转、指定图像大小和水平翻转|chu
  9. 谁会嫌钱多啊,最适合学生党的Python兼职攻略以及接私活经验
  10. 如何卸载uniaccess安全助手_[教程]如何关闭烦人的电脑弹窗广告?