7-7 修理牧场 (25分)嗯嗯
农夫要修理牧场的一段栅栏,他测量了栅栏,发现需要N块木头,每块木头长度为整数Li 个长度单位,于是他购买了一条很长的、能锯成N块的木头,即该木头的长度是Li 的总和。
但是农夫自己没有锯子,请人锯木的酬金跟这段木头的长度成正比。为简单起见,不妨就设酬金等于所锯木头的长度。例如,要将长度为20的木头锯成长度为8、7和5的三段,第一次锯木头花费20,将木头锯成12和8;第二次锯木头花费12,将长度为12的木头锯成7和5,总花费为32。如果第一次将木头锯成15和5,则第二次锯木头花费15,总花费为35(大于32)。
请编写程序帮助农夫计算将木头锯成N块的最少花费。
输入格式:
输入首先给出正整数N(≤10 4 ),表示要将木头锯成N块。第二行给出N个正整数(≤50),表示每段木块的长度。
输出格式:
输出一个整数,即将木头锯成N块的最少花费。
输入样例:
8
4 5 1 2 1 3 1 1
输出样例:
49
思路
木头还没锯出来的,后来几次锯,每锯一次就算一次钱,所以木头长度越长的越早锯断出来就好,我们把一段木头锯断成两段花的钱作为二叉树根结点的权值,锯断成的两段木头再锯断又要花自身重量的钱,把它作为其权值,以此类推,我们考虑这是二叉树有关问题,在草稿纸上一验证~哈夫曼树,求出哈夫曼树的最小带权路径长即可。我们可以用优先队列操作。
代码
#include <bits/stdc++.h>
using namespace std;
int main()
{priority_queue<int, vector<int>, greater<int> > p;int n, m;cin >> n;for(int i = 0; i < n; i++){cin >> m;p.push(m);}int sum = 0;while(p.size() > 1){int x, y;x = p.top();p.pop();y = p.top();p.pop();sum += x+y;p.push(x+y);}cout << sum;
}
7-7 修理牧场 (25分)嗯嗯相关推荐
- 7-29 修理牧场 (25 分)
7-29 修理牧场 (25 分) 农夫要修理牧场的一段栅栏,他测量了栅栏,发现需要N块木头,每块木头长度为整数L i 个长度单位,于是他购买了一条很长的.能锯成N块的木头,即该木头的长度是L ...
- 7-1 修理牧场 (25 分)(最详解)(最容易理解的解题过程)
7-1 修理牧场 (25 分)(最详解)(最容易理解的解题过程) 农夫要修理牧场的一段栅栏,他测量了栅栏,发现需要N块木头,每块木头长度为整数Li个长度单位,于是他购买了一条很长的.能锯成N块的 ...
- 7-218 修理牧场 (25 分)
7-218 修理牧场 (25 分) 农夫要修理牧场的一段栅栏,他测量了栅栏,发现需要N块木头,每块木头长度为整数Li个长度单位,于是他购买了一条很长的.能锯成N块的木头,即该木头的长度是Li的总和 ...
- 7-5 修理牧场 (25 分)
7-5 修理牧场 (25 分) 农夫要修理牧场的一段栅栏,他测量了栅栏,发现需要N块木头,每块木头长度为整数L i个长度单位,于是他购买了一条很长的.能锯成N块的木头,即该木头的长度是L i的总和. ...
- 7-29 修理牧场 (25分)(PTA实验题)
7-29 修理牧场 (25分) 农夫要修理牧场的一段栅栏,他测量了栅栏,发现需要N块木头,每块木头长度为整数Li 个长度单位,于是他购买了一条很长的.能锯成N块的木头,即该木头的长度是Li ...
- 数据结构PTA习题:基础实验4-2.7 修理牧场 (25分)
基础实验4-2.7 修理牧场 (25分) 农夫要修理牧场的一段栅栏,他测量了栅栏,发现需要N块木头,每块木头长度为整数Li个长度单位,于是他购买了一条很长的.能锯成N块的木头,即该木头的长度是L ...
- 【两种方法】基础实验4-2.7 修理牧场 (25 分)
立志用最少的代码做最高效的表达 农夫要修理牧场的一段栅栏,他测量了栅栏,发现需要N块木头,每块木头长度为整数Li个长度单位,于是他购买了一条很长的.能锯成N块的木头,即该木头的长度是Li的总和. 但 ...
- 7-2 修理牧场 (25 分)
大一下半期数据结构 修理牧场 农夫要修理牧场的一段栅栏,他测量了栅栏,发现需要N块木头,每块木头长度为整数Li个长度单位,于是他购买了一条很长的.能锯成N块的木头,即该木头的长度是Li的总 ...
- python 7-33 修理牧场 (25 分) PTA
农夫要修理牧场的一段栅栏,他测量了栅栏,发现需要N块木头,每块木头长度为整数Li个长度单位,于是他购买了一条很长的.能锯成N块的木头,即该木头的长度是Li的总和. 但是农夫自己没有锯子,请人锯木的 ...
最新文章
- 再见SpringMVC!小程序开发工程师岗位职责
- Creating Your First Blockchain with Java. Part 1.
- mapper里面select id 后面一直红名_YTG晨晨改ID“进厂找班上了”,如此自嘲,心态还挺好...
- python中变量的作用域
- KVO - 观察自定义属性值
- SSH-struts2的异常处理
- Network in Network----Global Average Pooling
- python报“IndentationError: unexpected indent“的解决方法
- 无线电简单用语.解析
- 快捷键关机电脑_电脑还可以这样关机?炫技术的时候到了!
- 2021世界互联网大会“全体会议”发言干货都在这篇了
- 不要让刷单限制了你的运营能力,零基础店铺流量爆发技巧!
- 记dubbo consumer服务因订阅其他有异常的服务导致超时的问题
- 【Applied Algebra】可满足性模理论(Satisfiability Modulo Theories)入门
- Autodesk Flame Education 2020 特别版 Mac 交互设计终极视觉特效制作软件
- 老卫带你学---DDSM乳腺癌数据研究
- 从三字经看古代幼儿教育
- vectorvn1610报价_【德国VECTOR VN1610模块】价格_厂家 - 中国供应商
- 管理模型 - RACI模型
- linux ls和ll命令学习小结
热门文章
- 2015年江苏大学885代码题(含答案)
- 白话透解验收标准(AC)与完成标准(DoD)的区别
- c语言随机数的产生方法
- gels imagej 图片处理_如何使用imageJ做到将图片的某些东西消除而不影响图片背景...
- ES报错-----------es分片数量修改,
- 2021高考尚志成绩查询,2021尚志市安全教育平台登录入口网址【最新】
- 必须收藏的学位论文免费下载网站!!各国论文免费下载!英国 欧洲 美国 芬兰 日本 加拿大 等等20余
- Android-->Log系统logger保存日志到本地
- 【新书速递】深入浅出联邦学习
- 金三银四魔都两年半前端面经