【PTA】【数据结构与算法题目集】7-29 修理牧场(25分)【霖行】

2023-10-31

【PTA】【数据结构与算法题目集】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<iostream>
#include<queue>
#include<vector>

using namespace std;

int main()
{
	priority_queue<int, vector<int> ,greater<int> > G;//最小堆
	int N; cin >> N;
	for (int i = 0; i < N; i++)
	{
		int Num; cin >> Num;
		G.push(Num);
	}
	int sum = 0;
	for(int i=1;i<N;i++)//需要N-1次操作
	{
		int A = G.top(); G.pop();//读取并弹出最小元素
		int B = G.top(); G.pop();
		sum += A + B;//合成
		G.push(A + B);//将合成的木头压入最小堆
	}
	cout << sum;
	return 0;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【PTA】【数据结构与算法题目集】7-29 修理牧场(25分)【霖行】 的相关文章

  • 金特 + XNA (C#)

    是否可以使用jint http jint codeplex com操作使用 XNA C 创建的 3D 环境 并向该环境添加功能 再次使用 jint 作为 Jint 的贡献者 我会推荐你Jint http jint codeplex com
  • 我应该把 try/catch 和“using”语句放在哪里? [复制]

    这个问题在这里已经有答案了 可能的重复 try catch using 正确的语法 https stackoverflow com questions 4590490 try catch using right syntax 我想try c
  • JSON.Net 反序列化返回“null”

    我正在使用 JSON Net 反序列化 JSON 字符串 JSON 字符串是 string testJson Fruits Apple color red size round Orange Pro
  • 我如何知道 C 程序的可执行文件是在前台还是后台运行?

    在我的 C 程序中 我想知道我的可执行文件是否像这样在前台运行 a out 或者像这样 a out 如果你是前台工作 getpgrp tcgetpgrp STDOUT FILENO or STDIN FILENO or STDERR FIL
  • C free() 是如何工作的? [复制]

    这个问题在这里已经有答案了 可能的重复 malloc 和 free 如何工作 https stackoverflow com questions 1119134 how malloc and free work include
  • XPATH 查询、HtmlAgilityPack 和提取文本

    我一直在尝试从名为 tim new 的类中提取链接 我也得到了解决方案 给出了解决方案 片段和必要的信息here https stackoverflow com questions 2982862 extracting a table ro
  • 异常堆栈跟踪不显示抛出异常的位置

    通常 当我抛出异常 捕获它并打印出堆栈跟踪时 我会看到抛出异常的调用 导致该异常的调用 导致该异常的调用that 依此类推回到整个程序的根 现在它只向我显示异常所在的调用caught 而不是它所在的地方thrown 我不明白是什么改变导致了
  • 如果 JSON.NET 中的值为 null 或空格,则防止序列化

    我有一个对象需要以这样的方式序列化 即 null 和 空白 空或只是空格 值都不会序列化 我不控制对象本身 因此无法设置属性 但我知道所有属性都是字符串 环境NullValueHandling显然 忽略 只能让我找到解决方案的一部分 它 似
  • 在 ASP.NET MVC 中将模型从视图传递到控制器

    我正在 ASP NET MVC 中开发我的第一个应用程序 但遇到了一个我无法解决的问题 即使在阅读了整个互联网之后也是如此 因此 我有几个使用视图模型创建的视图 它们是报告 这些视图模型是根据用户选择标准填充的 我正在尝试构建一种接受模型并
  • C# 处理标准输入

    我目前正在尝试通过命令行断开与网络文件夹的连接 并使用以下代码 System Diagnostics Process process2 new System Diagnostics Process System Diagnostics Pr
  • 将下拉列表与字典绑定

    我将字典绑定到下拉列表 举例来说 我的字典中有以下项目 Test1 123 Test2 321 我希望下拉文本采用以下格式 Test1 Count 123 Test2 Count 321 我沿着以下路径走 但没有运气 MyDropDown
  • 全局使用和 .NET Standard 2.0

    我最近意识到我可以使用 C 10 功能文件范围的命名空间在 NET Standard 2 0 项目中也可以通过设置
  • C# 编译器数字文字

    有谁知道 C 编译器数字文字修饰符的完整列表 默认情况下 声明 0 使其成为 Int32 声明 0 0 使其成为 Double 我可以在末尾使用文字修饰符 f 来确保某些内容被视为 Single 例如像这样 var x 0 x is Int
  • 通过 C# Mailkit / Mimekit 发送电子邮件,但出现服务器证书错误

    Visual Studio 2015 中的 0 代码 1 我正在使用 Mailkit 最新版本 1 18 1 1 从我自己的电子邮件服务器发送电子邮件 2 电子邮件服务器具有不受信任的自签名证书 3 我在代码中添加了以下两行 以忽略服务器证
  • 子目录中的头文件(例如 gtk/gtk.h 与 gtk-2.0/gtk/gtk.h)

    我正在尝试使用 GTK 构建一个 hello world 其中包括以下行 include
  • 如何使用递归查找数字中的最小元素 [C]

    好的 所以我正在准备我的 C 考试 当谈到递归时我有点卡住了我是大学一年级的学生 这对我来说似乎有点困难 练习要求在给定的数字中使用递归函数我需要找到最小的元素 例如 52873 是 2 程序需要打印 2 include
  • 使用 OleDbCommandBuilder 时访问 SQL 语法错误

    我要在 C 中使用 OleDbDataAdapter 在 Access 数据库中插入数据 但收到错误消息INSERT INTO 命令中的语法错误 BackgroundWorker worker new BackgroundWorker Ol
  • doxygen c++:记录由“using”声明公开的私有继承成员

    作为一个例子 我有以下课程 class A public void methodOne class B private A public Brief description using A methodOne 我还没有找到强制 doxyge
  • 为什么 f(i = -1, i = -1) 是未定义的行为?

    我正在读关于违反评估顺序 http en cppreference com w cpp language eval order 他们举了一个令我困惑的例子 1 如果标量对象上的副作用相对于同一标量对象上的另一个副作用是无序的 则行为未定义
  • 嵌入式二进制资源 - 如何枚举嵌入的图像文件?

    我按照中的说明进行操作这本书 http www apress com book view 9781430225492 关于资源等的章节 我不太明白的是 如何替换它 images Add new BitmapImage new Uri Ima

随机推荐

  • UPnP协议学习

    UPnP架构定义了两种类型的设备 控制设备 controlled devices 和控制点 control points 控制设备扮演服务器的角色 响应控制点的请求 控制点和控制设备都能在各种平台包括个人电脑和嵌入式设备中实现 多个控制设备
  • C#8.0本质论第四章--操作符和控制流程

    C 8 0本质论第四章 操作符和控制流程 4 1操作符 有些操作符以符号的形式出现 例如 或者 等 而另一些操作符则为关键词 例如default和is 4 1 1一元正负操作符 一元正操作符 对值几乎没有影响 它在C 中是多余的 4 1 2
  • 组织机构代码输入测试用例_测试代码以用于过大的输入

    组织机构代码输入测试用例 在编写单元测试时 我们主要关注业务的正确性 我们将竭尽所能 开开心心地走在最前沿 我们有时会进行微基准测试并衡量吞吐量 但是经常遗漏的一个方面是当输入过大时我们的代码如何表现 我们测试了如何处理正常的输入文件 格式
  • MES系统介绍

    MES系统是什么 能解决企业管理中的什么问题 史上最全MES生产管理系统介绍 傲鹏MES供应商内部培训资料 错过了就没有了 一 MES系统介绍1 什么是MES系统 中文全称 制造执行系统 英文全称 manufacturing executi
  • 基于x86架构的CentOS7虚拟机通过qemu安装ARM架构CentOS7虚拟机_centos7 arm 网络配置

    原文连接 基于x86架构的CentOS7虚拟机通过qemu安装ARM架构CentOS7虚拟机 centos7 arm redrose2100的博客 CSDN博客 试过很多版本的在win10系统直接qemu安装arm版linux都失败了 也看
  • vm16安装windows系统

    安装win7系统 网上找到的iso均为ghost镜像 结果发现无法引导 找了个win10镜像可以引导 同时在创建一个cd加载win7的iso 进入win10的镜像PE 格式化硬盘 安装win7镜像 ok 同时 使用win7配置 安装win1
  • [创业之路-43] :复盘与自省 - 创业初感悟(冲动->纠结->忐忑)与“不贪、不赌、不悔”做人做事三原则的成形

    目录 创业冲动 冲动之后是纠结 选择后的忐忑 未来的应对之策 复盘后的体悟 做人做事三大基本原则1 不贪而心安 做人做事三大基本原则2 不赌而敬畏 做人做事三大基本原则3 不悔而未来 收获 创业冲动 虽然对创业进行了很多零散知识上的准备和多
  • 【WEB】关于网页设置 background-image: url死活显示不出来的解决办法

    图片或者背景显示不出来 大部分都是路径的问题 这是我图片所在的文件夹 相信很多有这个问题的小伙伴都是像我下面这样写的路径 那么背景图是不会显示出来的 解决办法如下图 原因是 在img的src中 是以当前html网页做相对文件 来设置引入图片
  • 全网最详细Postman接口测试使用教程(实战干G货)

    目录 导读 一 前言 二 接口测试 三 抓包 四 postman构造请求 五 其他的登录鉴权方式 六 总结 一 前言 测试行业现在越来越卷 不会点接口测试好像简历都已经拿不出手了 但很多小伙伴都会头疼 接口测试应该怎么入门 那么多的接口测试
  • vue axios三层封装

    utils文件下创建request js文件 第一层封装 引入axios文件 import axios from axios import qs from qs 声明公共的地址 axios defaults baseURL 设置超时 axi
  • 使用Python进行基于属性的测试

    When you write unit tests it s hard to find the right test cases You want to be certain that you covered all the interes
  • Acm Club 1326:算法2-8~2-11:链表的基本操作

    题目描述 链表是数据结构中一种最基本的数据结构 它是用链式存储结构实现的线性表 它较顺序表而言在插入和删除时不必移动其后的元素 现在给你一些整数 然后会频繁地插入和删除其中的某些元素 会在其中某些时候让你查找某个元素或者输出当前链表中所有的
  • 基于JT/T808协议、JT/T809协议、JT/T1078协议、苏标主动安全的车联网平台架构方案

    JT808是定位协议 通讯协议 基础协议 其他协议基于该协议进行扩展 JT809是转发协议 监管协议 第三方平台通过809向808进行数据获取与事件下发 JT1078是多媒体监控协议 视频 音频 对讲可以通过809扩展实现上级也可以多媒体监
  • Android 关于微信原生登录和友盟第三方微信登录来获取code那些坑(40029问题)

    如果你恰好集成了微信原生登录与友盟三方登录 那么可以继续往下看了 问题描述 本来在APP端使用openid就可以了的 结果未想到 后台要我们传一个Code过去 就是微信里面的Resp Error code这个 code 友盟登录里是直接获取
  • java 线程:概念与原理

    本文转载至 http lavasoft blog 51cto com 62575 99150 一 操作系统中线程和进程的概念 现在的操作系统是多任务操作系统 多线程是实现多任务的一种方式 进程是指一个内存中运行的应用程序 每个进程都有自己独
  • qt鼠标事件

    一 qt的鼠标事件包含头文件
  • 小程序 image标签 默认宽高问题,如何实现高度自适应

    微信小程序的图片image有默认的宽高 width 320px和height 240px 我遇到的业务场景是宽度100 高度自适应 所以 1 宽度设置成100 img width 100 2 设置mode属性 mode widthFix
  • 2019夏令营之行(下) 南大软件+北邮网研院

    夏令营 上 https blog csdn net Cc Sonia article details 95238001 正如上篇博客所说 北航计算机是我最满意的结果 所以剩下的这两个夏令营我就没认真参加2333 7 17 7 20 南大软件
  • 基于多进程并发-进程通讯之管道(pipe)

    一 管道 pipe 所谓的管道 就是内核 的 串缓存 Pipe 一个进程从管道的 端写 的数据 实际上是缓存在内核中的 另 端读取 也就是从内核中读取这段数据 特性 有两种类型的管道 匿名管道 有名管道 也叫命名管道 简单实现 有大小限制
  • 【PTA】【数据结构与算法题目集】7-29 修理牧场(25分)【霖行】

    PTA 数据结构与算法题目集 7 29 修理牧场 25分 霖行 题目 题目链接 7 29 修理牧场 25 分 农夫要修理牧场的一段栅栏 他测量了栅栏 发现需要N块木头 每块木头长度为整数L i个长度单位 于是他购买了一条很长的 能锯成N块的