二叉堆模板(备用)
来源:互联网 发布:视频收费网站源码 编辑:程序博客网 时间:2024/06/06 19:48
//二叉堆#include <cstdio>#include <iostream>using namespace std;int read(){int num1=0,fu=1;char ch=getchar();if(ch=='-')fu=-1;while(ch<'0'||ch>'9')ch=getchar();while(ch>='0'&&ch<='9'){num1=num1*10+ch-'0';ch=getchar();}return num1*fu;}int a[100004]={0};//堆 int n;void put(int);void get(int);int min1(int ,int);int main(){n=read();for(int i=1;i<=n;i++){a[i]=read();put(i);}int m=read();//修改次数 for(int i=1;i<=m;i++){bool bo=read();// bo=1时添加新元素,bo=0时输出并删除最小元素if(bo){int num=read();a[n++]=num;put(n);}else{printf("%d\n",a[1]);a[1]=a[n--];get(1);} }return 0;}void put(int i){if(a[i]>=a[i/2])return;//已包括i=1 else{swap(a[i],a[i/2]);put(i/2);}}void get(int i){if(i*2>n)return;else{int t=min1(i*2,i*2+1);if(a[i]<=a[t])return;else{swap(a[i],a[t]);get(t);}} }int min1(int z,int x){if(x>n)return z;else{return a[z]<a[x]?z:x; }}
阅读全文
0 0
- 二叉堆模板(备用)
- 【模板】二叉堆 (模板题:洛谷P3378堆)
- 优先队列(二叉堆)模板(template)
- 二叉堆基本模板(正稿)
- [模板] 二叉堆
- 二叉堆基本模板
- 最小生成树---prim模板(二叉堆优化)
- 二叉堆的c++模板类实现
- 二叉排序堆基础模板题
- 单源最短路---dijkstra模板(二叉堆优化)
- 二叉堆(堆排序)
- 【数据结构】二叉堆(堆)
- (二叉堆,堆排序)
- 【线段树】备用模板
- 【矩阵】备用模板
- 二叉堆(Binary_Heap)
- (二叉)堆排序
- 堆排(模板)
- 将N个字符的数组,循环右移K位。时间复杂度O(N)
- 【C++】【LeetCode】92. Reverse Linked List II
- LTE之物理层上下行
- Servlet开发步骤
- C#之入门总结_字符串_09
- 二叉堆模板(备用)
- 延迟关联(解决海量数据分页优化)
- 简单比较init-method,afterPropertiesSet和BeanPostProcessor
- 当前流行5大css前端框架(2017.5)
- Object Detection
- HDU4027 Can you answer these queries?(线段树区间更新,区间开根号)
- Java封装性、构造方法、匿名对象
- docker初探---第一季
- Json--后台将List集合转换成json数据