7-29 修理牧场 (25 分)
7-29 修理牧场 (25 分)
农夫要修理牧场的一段栅栏,他测量了栅栏,发现需要N块木头,每块木头长度为整数L
i
个长度单位,于是他购买了一条很长的、能锯成N块的木头,即该木头的长度是L
i
的总和。
但是农夫自己没有锯子,请人锯木的酬金跟这段木头的长度成正比。为简单起见,不妨就设酬金等于所锯木头的长度。例如,要将长度为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()
{int i,n,m,a,b,s=0;cin>>n;priority_queue <int,vector<int>, greater<int> >q;for(i=1;i<=n;i++){scanf("%d",&m);q.push(m);}while(q.size()!=1){a=q.top();q.pop();b=q.top();q.pop();s+=a+b; //每次取最小两块的和 q.push(a+b); //每次再最小两块合成一块,推回队列 }cout<<s<<endl;
}
7-29 修理牧场 (25 分)相关推荐
- 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的总和. 但是农夫自己没有锯子,请人锯木的 ...
- 7-7 修理牧场 (25分)嗯嗯
农夫要修理牧场的一段栅栏,他测量了栅栏,发现需要N块木头,每块木头长度为整数Li 个长度单位,于是他购买了一条很长的.能锯成N块的木头,即该木头的长度是Li 的总和. 但是农夫自己没有锯子,请 ...
最新文章
- python给生活带来哪些改变_你们觉得python简单么?真的能给生活带来更多机遇么?或者说某些改变?...
- js控制页面刷新大全
- 新手学习Java必需要知道的这些基本概念!
- Servlet之javaweb应用(二)
- 深入了解Java 8日期和时间API
- java学习(61):适配器
- 消息队列RabbitMQ入门与5种模式详解
- 基于Fabric的性能测试与调优实践
- How to increase sales, in addition to manufacturing different phones
- Tomcat下使用Log4j 接管 catalina.out 日志文件生成方式
- enumerable java_ruby中的Enumerable的使用
- 一线互联网企业负载均衡和应用优化基础
- javascript自定义滚动条插件,几行代码的事儿
- C语言例题-打印日历
- 毕设/私活/必备,一个挣钱的标准开源前后端分离【springboot+vue+redis+Spring Security】脚手架--若依框架
- everything用于移动硬盘资料管理(一):离线搜索
- 仿羊了个羊H5游戏源码
- 2.OSGI企业应用开发-Eclipse中搭建Felix运行环境
- 电子商务站点资源收集~~~
- Lol(英雄联盟)自动输入密码
热门文章
- TensorFlow tf.nn.conv2d是怎样实现卷积的?
- python 矩阵常用计算
- 【Python排序搜索基本算法】之拓扑排序
- Imagemagick常用指令
- EXSI中Linux安装tools
- HuaWei设置镜像端口和观察端口
- Cissp-【第3章 安全工程】-2021-1-31(205页-237页)
- post xmlrpc.php,宝塔面板WordPress /xmlrpc.php经常被post恶意数据
- mos管开关电路_MOS管的知识,看这一篇就可以了
- 深入理解Java注解Annotation及自定义注解