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

7-1 修理牧场 (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

题目解释:利用建造哈夫曼树的思想  根据叶节点的权值 排序(升序)(模仿最小堆) 将其所有叶节点的权值入队  当然我们入的是C++中的优先队列(模仿最小堆)

分享C++中 被调用的 优先队列类及其方法

优先队列具有队列的所有特性,包括基本操作,只是在这基础上添加了内部的一个排序,它本质是一个堆实现的

和队列基本操作相同:

top 访问队头元素
empty 队列是否为空
size 返回队列内元素个数
push 插入元素到队尾 (并排序)
emplace 原地构造一个元素并插入队列
pop 弹出队头元素
swap 交换内容
定义:priority_queue<Type, Container, Functional>
Type 就是数据类型,Container 就是容器类型(Container必须是用数组实现的容器,比如vector,deque等等,但不能用 list。STL里面默认用的是vector),Functional 就是比较的方式,当需要用自定义的数据类型时才需要传入这三个参数,使用基本数据类型时,只需要传入数据类型,默认是大顶堆
一般是:

//升序队列
priority_queue <int,vector<int>,greater<int> > q;
//降序队列
priority_queue <int,vector<int>,less<int> >q;

//哈夫曼树
#include<bits/stdc++.h>
using namespace std;
int main(){priority_queue <int,vector<int>,greater<int> > q;//优先队列 中 升序队列int N,i,j,k,a[10000],d[10000],sum=0;scanf("%d",&N);for(i=0;i<N;i++){scanf("%d",&a[i]);}for(i=0;i<N;i++){q.push(a[i]);}while(!q.empty()&&q.size()!=1){int temp1= q.top();//先访问 再弹出 q.pop();int temp2= q.top();q.pop();int temp=temp1+temp2;sum+=temp;q.push(temp);}  printf("%d",sum);
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/308603.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

收购最大K8s服务商,重回独立的SUSE又要和Red Hat拼混合云

7月8日&#xff0c;SUSE 宣布收购 Kubernetes 管理平台公司 Rancher Labs&#xff0c;交易预计在2020年10月底之前完成。有外媒称&#xff0c;收购价预估在6亿至7亿美元之间。 宣布要收购之后&#xff0c;SUSE 的介绍前缀中又多了个关键词——Kubernetes&#xff0c;变成企业级…

post获取重定向的链接 python_【转载】python面试基础知识(四) 网络部分

最近&#xff0c;小编在整理python面试基础知识&#xff0c;看了很多博客、文章和咨询了一些大厂公司大牛。了解到&#xff0c;在python面试的时候&#xff0c;不仅要求你有项目经验&#xff0c;还要考试代码呢&#xff01;今天&#xff0c;小编和大家分享一下python面试基础知…

7-4 小字辈 (25 分) 详解

7-4 小字辈 (25 分) 本题给定一个庞大家族的家谱&#xff0c;要请你给出最小一辈的名单。 输入格式&#xff1a; 输入在第一行给出家族人口总数 N&#xff08;不超过 100 000 的正整数&#xff09; —— 简单起见&#xff0c;我们把家族成员从 1 到 N 编号。随后第二行给出…

[MyBatisPlus]MyBatisPlus简介特性

简介 MyBatis-Plus&#xff08;简称 MP&#xff09;是一个 MyBatis的增强工具&#xff0c;在 MyBatis 的基础上只做增强不做改变&#xff0c;为简化开发、提高效率而生。 愿景 我们的愿景是成为 MyBatis 最好的搭档&#xff0c;就像魂斗罗中的 1P、2P&#xff0c;基友搭配&…

交换机千兆和百兆对网速影响_家里明明装了百兆宽带!为啥网速还这么慢?原因竟然在这!...

现在的人&#xff0c;已经渐渐离不开手机和电脑&#xff0c;而说到手机和电脑&#xff0c;那就绕不过网络。随着光纤入户&#xff0c;网速有了大大的提升&#xff0c;百兆宽带也走进了寻常百姓家。可是不知道你有没有发现一个问题&#xff0c;为什么你明明安装的是百兆的宽带&a…

修复被破坏的 vs 工程设置

缘起 前几天打开工作项目进行编译&#xff0c;没想到居然报错&#xff0c;明明前一天编译还正常的。简单排查后&#xff0c;临时修复了问题。但是今天新建工程时居然还有相同的问题&#xff0c;是可忍熟不可忍&#xff1f;本文记录了排查过程&#xff0c;希望对各位小伙伴儿有帮…

7-4 二叉树的遍历!(简单) (25 分)

7-4 二叉树的遍历&#xff01;&#xff08;简单&#xff09; (25 分) 二叉树作为FDS课程最核心的数据结构之一&#xff0c;要求每个人都掌握&#xff01; 这是一道简单的二叉树问题&#xff01; 我们将给出一颗二叉树&#xff0c;请你输出它的三种遍历&#xff0c;分别是先序…

[MyBatisPlus]入门案例

入门案例 创建测试数据库和表 CREATE DATABASE mybatis_plus /*!40100 DEFAULT CHARACTER SET utf8mb4 */; use mybatis_plus;CREATE TABLE user ( id bigint(20) NOT NULL COMMENT 主键ID,name varchar(30) DEFAULT NULL COMMENT 姓名, age int(11) DEFAULT NULL COMMENT 年…

vs 2019 aspx灰色_蛇纹当道,豹纹在侧:穿成动物园是2019时尚大势?

↑点击上方三联生活周刊加星标&#xff01;忘记动物纹让你联想到的隐喻吧&#xff0c;它应该用时髦来吸引你。蛇纹当道&#xff0c;豹纹在侧和有嬉皮印记的植物花纹不同&#xff0c;动物纹让人觉得老派而华丽&#xff0c;所以前者有像《佩斯利公园》这样的歌来将它比喻成没有世…

TensorFlow.NET 在工业部署中的应用

前言深度学习训练的模型 如何快速地在工业应用中进行部署&#xff0c;这一直是工业领域深度学习技术应用的痛点。我们来看下TIOBE 2020年7月 的 TOP 10 编程语言排行榜&#xff1a;从上图中可以看到&#xff0c;Python 占据了 第 3 名&#xff0c;C# 在 第 5 名。在深度学习的科…

数据结构 快速排序(详解)

快速排序 1&#xff1a;快速排序的思想 快速排序运用了分治的思想&#xff0c;即通过一趟排序 将序列分为两部分&#xff0c;根据选取的基准&#xff0c; 将比基准小的数放在基准前面&#xff0c;将比基准大的数放在的数放在基准后面&#xff1b;然后对两部分进行递归处理&…

全年营业额怎么计算_门店盈亏平衡计算及案例分析 | 商品管理

以某门店为例&#xff0c;面积为150平方米。年租金16万元、人员工资费用15万元、水电费3万元&#xff0c;税费1.2万元、装修费2.9万元、交通费1.6万元、投入成本的利息及其他费用3.3万元。(进货折扣)是50%&#xff0c;春夏季销售额占年总销售额的40%&#xff0c;一件春夏季的衣…

人工智能?.NetCore一样胜任!

提起AI&#xff0c;大家都会先想到Python&#xff0c;确实Python作为一门好几十年的老语言&#xff0c;上一波的AI大流行使它焕发了青春。大家用Phtyon来做AI&#xff0c;最主要的原因无非就是编码量更少&#xff0c;很多数学和AI相关的Api都是现成的。但是随着ML.net的问世&am…

创建链表小细节(引用传递和值传递以及链表中的LinkList L、LinkList *L、LinkList L)

函数参数传递的两种方式为值传递和引用传递 目录 函数参数传递的两种方式为值传递和引用传递 1.传值方式传参 2.引用方式传参 3.通过一段代码运行进一步理解传指针(包括二级指针)和传指针的引用 4.总结 1.传值方式传参 c语言是按值传递的&#xff0c;在函数中被传递的参…

区域转换为二值图像_Matlab图像处理系列教程(一)

小编近期为大家带来一套全面系统的MATLAB在图像处理中的应用。灰度处理 灰度化处理就是将一幅色彩图像转化为灰度图像的过程。彩色图像分为R&#xff0c;G&#xff0c;B三个分量&#xff0c;分别显示出红绿蓝等各种颜色&#xff0c;灰度化就是使彩色的R&#xff0c;G&#xff0…

7.30 KubeCon2020 | 今天下午5:40 近几年最火爆的技术峰会之分享主题.NET开发者与Kuberentes...

01最负盛名的峰会自2018 年 KubeConCloudNativeCon 首次落地中国以来&#xff0c;CNCF 每年都会在中国举办云原生技术大会。大会每年都能吸引来自五大洲 48 个国家的开源精英和技术大咖前来参会。阿里、华为、腾讯等你所知道的每一家大厂都是KubeCon的大会赞助商。滑动查看更多…

[MyBatisPlus]测试BaseMapper的功能测试自定义功能

测试BaseMapper的功能 添加功能 /*** 实现新增用户信息*/Testpublic void testInsert(){User user new User();user.setName("张三");user.setAge(23);user.setEmail("zhangsanxx.com");int result userMapper.insert(user);System.out.println("r…

利用数组模拟队列和栈(详解)

利用数组模拟队列和栈 目录 利用数组模拟队列和栈 1&#xff1a;使用要领 2:具体代码 3&#xff1a;C栈和队列的链接 1&#xff1a;使用要领 在C语言中如果要用到了队列和栈 但又不想 写队列和栈的方法 &#xff0c;可已使用数组模拟队列和栈&#xff1b;但如果使用C便可以…

[MyBatisPlus]通用Service接口测试通用Service

通用Service接口 说明: 通用 Service CRUD 封装IService接口&#xff0c;进一步封装 CRUD 采用 get 查询单行 remove 删 除 list 查询集合 page 分页 前缀命名方式区分 Mapper 层避免混淆&#xff0c;泛型 T 为任意实体对象建议如果存在自定义通用 Service 方法的可能&#x…

windows 禁用ipv6服务_在 Windows 7 中禁用IPv6协议/IPv6隧道

How to disable certain Internet Protocol version 6 (IPv6) components in Windows Vista, Windows 7 and Windows Server 2008http://support.microsoft.com/kb/929852/HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip6\Parameters\双击 DisabledComponents 来…