heap 的一些用法
noip 合并果子
#include<bits/stdc++.h> using namespace std; int heap[maxn]; int size=0; void input(int d) {heap[size++]=d;push_heap(heap,heap+size,greater<int>()); } int get() {pop_heap(heap,heap+size,greater<int>());//pop_heap(heap,heap+size);return heap[--size]; } int32_t main() {int n; cin>>n;for(int i=0;i<n;i++){int d; cin>>d; input(d);}int ans=0;for(int i=1;i<n;i++){int a=get(); int b=get();input(a+b);ans+=a+b;}cout<<ans<<endl;return 0; }
好的代码
#include<bits/stdc++.h> using namespace std; template<typename T> void Print(T& V) {typename T::iterator iter=V.begin();while(iter != V.end()){cout<<*iter++<<" ";}cout<<endl; } int main() {vector<int> ivec;for(int i=3;i<=7;++i)ivec.push_back(i);for(int i=5;i<=9;++i)ivec.push_back(i);for(int i=1;i<=4;++i)ivec.push_back(i);cout<<"原数据:";Print(ivec);make_heap(ivec.begin(),ivec.end());//做最大堆排序,其实还在vector容器内cout<<"堆排后:";Print(ivec);pop_heap(ivec.begin(),ivec.end());//删除最大堆,其实是把数据放到最后了!cout<<"删除后:";Print(ivec);ivec.pop_back();pop_heap(ivec.begin(),ivec.end());//删除最大堆,其实是把数据放到最后了!cout<<"删除后:";Print(ivec);ivec.pop_back();ivec.push_back(15);cout<<"添加数据后:";Print(ivec);push_heap(ivec.begin(),ivec.end());//放入最大堆,其实是把新加入的数据,按照堆排加入堆内cout<<"把最后一个数加入堆里:\n";Print(ivec);sort_heap(ivec.begin(),ivec.end());//把堆排顺序,还原成一般的排序算法cout<<"还原堆排顺序:\n";Print(ivec);return 0; }
转载于:https://www.cnblogs.com/Andromeda-Galaxy/p/9516866.html
heap 的一些用法相关推荐
- c++ 关于heap的STL用法
c++ 关于heap的STL用法 #include <iostream> #include <vector> #include <algorithm> #inclu ...
- 内存泄漏的定位与排查:Heap Profiling 原理解析
系统长时间运行之后,可用内存越来越少,甚至导致了某些服务失败,这就是典型的内存泄漏问题.这类问题通常难以预测,也很难通过静态代码梳理的方式定位.Heap Profiling 就是帮助我们解决此类问题的 ...
- golang的heap profile原理
golang中提供了多种profile用于分析golang程序的CPU.内存等使用情况.heap profile是堆内存使用情况的profile信息,用于分析程序当前的堆内存使用情况,在分析内存开销和 ...
- 关于某日访问次数最多的IP的topK问题的三种解法
题目描述 在july大神的博客中,看到这样两道题: 1. 海量日志数据,提取出某日访问百度次数最多的那个IP. 2. 假设目前有一千万个记录(这些查询串的重复度比较高,虽然总数是1千万,但如果除去重复 ...
- python链表添加多个值_Python基础10之数据结构(下)
我的施工之路 上图施工计划,已完成专题: 1.数字专题 2.字符串专题 3.列表专题 4.流程控制专题 5.编程风格专题 6.函数使用专题 7.面向对象编程(上篇) 8.面向对象编程(下篇) 9.Py ...
- 【Python基础】盘点 Python 10 大常用数据结构(下篇)
我的施工之路 虽然艰辛,却有读者们陪伴 Python 常用数据结构 此专题<盘点Python10大常用数据结构>目录: 学习目的 学习目标 1 list 2 tuple 3 set 4 d ...
- jmap java opts_jmap --查看JVM内存使用详情
概述 命令jmap是一个多功能的命令.它可以生成 java 程序的 dump 文件, 也可以查看堆内对象示例的统计信息.查看 ClassLoader 的信息以及 finalizer 队列. jmap命 ...
- STL容器的底层数据结构
本文部分内容转自此博客 目录 vector list deque stack queue heap priority_queue set map multiset/multimap 哈希表hashta ...
- 刷题upupup【Java中Queue、Stack、Heap用法总结】
[Queue] 先进先出(First-In-First-Out),LinkedList实现了Queue接口.它只允许在表的前端进行删除操作,而在表的后端进行插入操作. add() 增加一个 ...
最新文章
- servlet生命周期
- python2.7 pip安装htmlreport报错_pytest十五:pytest-html 生成 html 报告
- mybatis 参数
- vscode如何及时提示flutter代码
- 数仓系列 | 深入解读 Flink 资源管理机制
- fiddler模拟低速网络
- android手机连接PC后怎样切换为U 盘模式
- 电子邮件通知系统前十名的 ”磁盘贪婪用户“
- java is a like a_小猿圈java之is-a、have-a和like-a的区别
- android 对象传输及parcel机制
- 安卓自定义控件,自行绘制文字
- 将QQ语音的slk格式转化为wma
- php面向对象编程孙卫琴,什么是面向对象编程(OOP)?,面向对象编程孙卫琴
- 感性负载,容性负载,阻性负载
- SQL去重的三种方法汇总​
- exlc表格怎么换行_excel表格怎么换行_excel表格怎么换行上下换行
- 化合物相似性搜索_SCIFINDER相似结构搜索教程
- 全年日历平铺展示以及日期批量选择
- 牛逼!这届WWDC依旧展现了那个让你无法复制的苹果!
- POI Excel实现内容替换