农夫要修理牧场的一段栅栏,他测量了栅栏,发现需要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分)嗯嗯相关推荐

  1. 7-29 修理牧场 (25 分)

    7-29 修理牧场 (25 分) 农夫要修理牧场的一段栅栏,他测量了栅栏,发现需要N块木头,每块木头长度为整数L ​i ​​ 个长度单位,于是他购买了一条很长的.能锯成N块的木头,即该木头的长度是L ...

  2. 7-1 修理牧场 (25 分)(最详解)(最容易理解的解题过程)

    7-1 修理牧场 (25 分)(最详解)(最容易理解的解题过程) 农夫要修理牧场的一段栅栏,他测量了栅栏,发现需要N块木头,每块木头长度为整数L​i​​个长度单位,于是他购买了一条很长的.能锯成N块的 ...

  3. 7-218 修理牧场 (25 分)

    7-218 修理牧场 (25 分) 农夫要修理牧场的一段栅栏,他测量了栅栏,发现需要N块木头,每块木头长度为整数Li​个长度单位,于是他购买了一条很长的.能锯成N块的木头,即该木头的长度是Li​的总和 ...

  4. 7-5 修理牧场 (25 分)

    7-5 修理牧场 (25 分) 农夫要修理牧场的一段栅栏,他测量了栅栏,发现需要N块木头,每块木头长度为整数L i个长度单位,于是他购买了一条很长的.能锯成N块的木头,即该木头的长度是L i的总和. ...

  5. 7-29 修理牧场 (25分)(PTA实验题)

    7-29 修理牧场 (25分) 农夫要修理牧场的一段栅栏,他测量了栅栏,发现需要N块木头,每块木头长度为整数Li ​​ 个长度单位,于是他购买了一条很长的.能锯成N块的木头,即该木头的长度是Li ​​ ...

  6. 数据结构PTA习题:基础实验4-2.7 修理牧场 (25分)

    基础实验4-2.7 修理牧场 (25分) 农夫要修理牧场的一段栅栏,他测量了栅栏,发现需要N块木头,每块木头长度为整数L​i​​个长度单位,于是他购买了一条很长的.能锯成N块的木头,即该木头的长度是L ...

  7. 【两种方法】基础实验4-2.7 修理牧场 (25 分)

    立志用最少的代码做最高效的表达 农夫要修理牧场的一段栅栏,他测量了栅栏,发现需要N块木头,每块木头长度为整数L​i个长度单位,于是他购买了一条很长的.能锯成N块的木头,即该木头的长度是Li的总和. 但 ...

  8. 7-2 修理牧场 (25 分)

    大一下半期数据结构 修理牧场 农夫要修理牧场的一段栅栏,他测量了栅栏,发现需要N块木头,每块木头长度为整数L​i​​个长度单位,于是他购买了一条很长的.能锯成N块的木头,即该木头的长度是L​i​​的总 ...

  9. python 7-33 修理牧场 (25 分) PTA

    农夫要修理牧场的一段栅栏,他测量了栅栏,发现需要N块木头,每块木头长度为整数Li​个长度单位,于是他购买了一条很长的.能锯成N块的木头,即该木头的长度是Li​的总和. 但是农夫自己没有锯子,请人锯木的 ...

最新文章

  1. 再见SpringMVC!小程序开发工程师岗位职责
  2. Creating Your First Blockchain with Java. Part 1.
  3. mapper里面select id 后面一直红名_YTG晨晨改ID“进厂找班上了”,如此自嘲,心态还挺好...
  4. python中变量的作用域
  5. KVO - 观察自定义属性值
  6. SSH-struts2的异常处理
  7. Network in Network----Global Average Pooling
  8. python报“IndentationError: unexpected indent“的解决方法
  9. 无线电简单用语.解析
  10. 快捷键关机电脑_电脑还可以这样关机?炫技术的时候到了!
  11. 2021世界互联网大会“全体会议”发言干货都在这篇了
  12. 不要让刷单限制了你的运营能力,零基础店铺流量爆发技巧!
  13. 记dubbo consumer服务因订阅其他有异常的服务导致超时的问题
  14. 【Applied Algebra】可满足性模理论(Satisfiability Modulo Theories)入门
  15. Autodesk Flame Education 2020 特别版 Mac 交互设计终极视觉特效制作软件
  16. 老卫带你学---DDSM乳腺癌数据研究
  17. 从三字经看古代幼儿教育
  18. vectorvn1610报价_【德国VECTOR VN1610模块】价格_厂家 - 中国供应商
  19. 管理模型 - RACI模型
  20. linux ls和ll命令学习小结

热门文章

  1. 2015年江苏大学885代码题(含答案)
  2. 白话透解验收标准(AC)与完成标准(DoD)的区别
  3. c语言随机数的产生方法
  4. gels imagej 图片处理_如何使用imageJ做到将图片的某些东西消除而不影响图片背景...
  5. ES报错-----------es分片数量修改,
  6. 2021高考尚志成绩查询,2021尚志市安全教育平台登录入口网址【最新】
  7. 必须收藏的学位论文免费下载网站!!各国论文免费下载!英国 欧洲 美国 芬兰 日本 加拿大 等等20余
  8. Android-->Log系统logger保存日志到本地
  9. 【新书速递】深入浅出联邦学习
  10. 金三银四魔都两年半前端面经