(水)POJ-1862 哈夫曼树变形
2016-05-08 17:36
288 查看
题目大意:变形虫:从N个数任取两个数按2*sqrt(a*b)合成新数放回,求最后那个数的最小值。
题目链接:点击打开链接
分析:维护一个优先队列,每次取出最大的2个合并然后加入优先队列(堆)中即可。
这里我只举个简单的例子,假设a1>>a2>a3,那么按照上面贪心的方法则最终结果的 立方 为 64*a1*a2*a3*a3
如果先取a2,a3那么最终结果的 立方 为 64*a2*a3*a1*a1 由于a1>>a2>a3,则第二种取法肯定比第一种大
附上代码:
题目链接:点击打开链接
分析:维护一个优先队列,每次取出最大的2个合并然后加入优先队列(堆)中即可。
这里我只举个简单的例子,假设a1>>a2>a3,那么按照上面贪心的方法则最终结果的 立方 为 64*a1*a2*a3*a3
如果先取a2,a3那么最终结果的 立方 为 64*a2*a3*a1*a1 由于a1>>a2>a3,则第二种取法肯定比第一种大
附上代码:
#include<iostream> #include<queue> #include<cmath> using namespace std; int n; priority_queue<double> q; int main() { scanf("%d", &n); for (int i = 0; i < n; i++) { double aa; scanf("%lf", &aa); q.push(aa); } while (q.size() > 1) { double a = q.top(); q.pop(); double b = q.top(); q.pop(); q.push(2 * sqrt(a * b)); } printf("%.3lf\n", q.top()); return 0; }
相关文章推荐
- Xcode-Xcode 7.3 解决不能自动联想问题-备
- 设计模式之解释器模式
- 【Android安全】使用jarsigner命令对apk进行重签名
- windows下开源工程编译--x264源码编译过程
- php7安装后无法开机启动问题
- Redis 介绍及编译安装——单机
- Java并发编程之volatile关键字解析
- 【Android安全】使用apktool工具进行对apk反编译和回编
- 程序猿薪资闲扯
- ectouch ucenter用户注册失败问题
- Swing常用组件之多行文本区JTextArea
- UVa 1601 The morning after Halloween(单向BFS+双向BFS)
- HDOJ(HDU) 2500 做一个正气的杭电人(水~)
- R语言中的复制符号"<-"和"="
- 利用Nginx实现域名转发 不修改主机头
- UID卡修改&UID锁死修复
- Spring基础知识(1)
- tar
- POJ3728 LCA RMQ 动态规划
- Glib学习(1) 单链表 Singly-Linked Lists