堆(heap)不是stl中的东西。。。它分为 max heap 和min heap。

但我不想用这些,而是采用了priority_queue,优先队列,定义在queue中。顾名思义,它的作用就是无论怎么输入,第一个输出都是最大的。

当然,这个优先级可以改变:priority_queue<int,vector<int>,greater<int> > h;

这么定义的话每次第一个取出的就是最小的。其实堆是优先队列的底层实现机制。。。(后台工作人员)

下面有一道题:合并果子

【问题描述】
在一个果园里,多多已经将所有的果子打了下来,而且按果子的不同种类分成了不同的堆。多多决定把所有的果子合成一堆。
每一次合并,多多可以把两堆果子合并到一起,消耗的体力等于两堆果子的重量之和。可以看出,所有的果子经过n-1次合并之后,就只剩下一堆了。多多在合并果子时总共消耗的体力等于每次合并所耗体力之和。
因为还要花大力气把这些果子搬回家,所以多多在合并果子时要尽可能地节省体力。假定每个果子重量都为1,并且已知果子的种类数和每种果子的数目,你的任务是设计出合并的次序方案,使多多耗费的体力最少,并输出这个最小的体力耗费值。
例如有3种果子,数目依次为1,,。可以先将 、2堆合并,新堆数目为3,耗费体力为3。接着,将新堆与原先的第三堆合并,又得到新的堆,数目为12,耗费体力为 。所以多多总共耗费体力=+=。可以证明15为最小的体力耗费值。
【输入文件】
  输入文件fruit.in包括两行,第一行是一个整数n( <= n <= ),表示果子的种类数。第二行包含n个整数,用空格分隔,第i个整数ai( <= ai <= )是第i种果子的数目。
【输出文件】
  输出文件fruit.out包括一行,这一行只包含一个整数,也就是最小的体力耗费值。输入数据保证这个值小于231。
【样例一输入】
  3
  1 2 9
【样例一输入】
  10
  3 5 1 7 6 4 2 5 4 1
【样例一输出】
  15 【样例一输出】
  120

事实上,这道题可以用动规,还可以直接贪心,但是在这么多方法中,个人认为用优先队列最方便。

代码如下:

#include<iostream>
#include<queue>
#include<cstdio>
#include<vector>
using namespace std;
int n;
priority_queue<int,vector<int>,greater<int> > h; //优先队列
void work()
{
int i, x, y, ans = ;
cin >> n;
for(i = ; i <= n ; i++) //建堆
{
cin >> x;
h.push(x);
}
for(i = ; i < n ; i++) //取、统计、插入
{
x = h.top();
h.pop();
y = h.top();
h.pop();
ans += x + y;
h.push(x + y);
}
cout << ans << endl;
} int main()
{
work();
return ;
}

最新文章

  1. 关于SQL语言,查询关联多张表出现的,无法返回空值的问题。
  2. Hibernate 性能优化之一级缓存
  3. [RxJS] Completing a Stream with TakeWhile
  4. Android FM学习中的模块 FM启动过程
  5. JQuery之初探
  6. jquery选择器之基本筛选选择
  7. CacheConcurrencyStrategy五种缓存方式
  8. java web jsp学习笔记--概述-常用语法,指令,动作元素,隐式对象,域对象
  9. vim 实用配置
  10. 浅谈AndroidGPU过度绘制、GPU呈现模式分析及相关优化
  11. Windows Server 2016-配置Windows Defender防病毒排除项
  12. 20165237 2017-2018-2 《Java程序设计》第2周学习总结
  13. 【PAT】B1033 旧键盘打字(20 分)
  14. ionic 版本内更新问题汇总
  15. [LeetCode&amp;Python] Problem 401. Binary Watch
  16. java入门简介
  17. JAVA框架 Mybaits 动态sql
  18. Boyer and Moore Fast majority vote algorithm(快速选举算法)
  19. 使用Spring的HttpInvoker
  20. jmeter小问题解决方案合集

热门文章

  1. ffmpeg从内存读取文件
  2. UpLoadify在IE下兼容问题
  3. LNMP动态网站架构及web应用部署,搭建discuz论坛
  4. 【原】PHPExcel导出Excel
  5. recreate dbcontrol on database 11.2.0.1 using emca
  6. [luogu2594 ZJOI2009]染色游戏(博弈论)
  7. jquery 插件封装模板
  8. 2.1.6、SparkEnv中创建ShuffleManager
  9. 使用MySQLMigrationToolkit快速将Oracle数据导入MySQL
  10. [Usaco2010 Mar]gather 奶牛大集会