首页 > 试题广场 >

切割成本

[编程题]切割成本
  • 热度指数:1391 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
将一条长度为x的线段切成若干段,切割点已给出,每次切割的成本为切割后产生的两段线段长度之和,求最小的切割成本。

示例1

输入

20,[2,5,10,18]

输出

45

说明

线段长为20,切割点为[2,5,10,18]。
第一种方案:
1.先切开第一个点,成本为2+18=20
2.切开第二个点,成本为3+15=18
3.切开第三个点,成本为5+10=15
4.切开第四个点,成本为8+2=10
总成本为:20 + 18 + 15 + 10 = 63;
第二种方案:
1.先切开第一个点,成本为5+15=20
2.切开第二个点,成本为2+3=5
3.切开第三个点,成本为5+10=15
4.切开第四个点,成本为8+2=10
总成本为:20 + 5 + 15 + 10 = 50;

备注:
切割点个数<300
x<1000000
头像 Miss.Zhou
发表于 2020-02-07 13:02:05
很明显的一个区间dp首先把首尾两点加入读进去的数组中,排序就像正常的区间dp一样第一重循环:子区间长度第二重循环:子区间开头位置第三重循环:子区间的中间断的点时间复杂度![: ](https://www.nowcoder.com/equation?tex=N%5E%7B3%7D "图片标题") 展开全文
头像 Maokt
发表于 2021-08-08 00:53:34
算法思想一:动态规划 解题思路: 可以用动态规划解决这个问题, 1、创建辅助数组dp,其中用 表示 之间(前闭后开)的切割点的最小成本,只要完善dp数组,最后 就是要求的最小切割成本和。 2、通过在原切割点数组中加入首尾点,然后一起排序。然后从0结点开始找 i 到 j 的子区间 展开全文
头像 球球了给孩子一个offer吧
发表于 2021-08-04 21:49:06
题目描述:将一条长度为x的线段切成若干段,切割点已给出,每次切割的成本为切割后产生的两段线段长度之和,求最小的切割成本。示例 输入:20,[2,5,10,18]返回值:45说明:线段长为20,切割点为[2,5,10,18]。第一种方案:1.先切开第一个点,成本为2+18=202.切开第二个点,成本 展开全文
头像 牛客534170409号
发表于 2021-08-09 11:10:18
题目描述 将一条长度为x的线段切成若干段,切割点已给出,每次切割的成本为切割后产生的两段线段长度之和,求最小的切割成本。 方法一 区间DP 解题思路 定义数组表示之间切割点的最小成本.为了计算每一个子区间的长度,需要向中添加边界点0和绳子长度,然后对所有切割点进行排序.在切割时,对每个区间,假设 展开全文
头像 CroMarmot
发表于 2021-10-05 00:21:16
题意 长最大为100000010000001000000的线段上,给n个点。 其中每选择一个点,线断根据这个点分成两段,代价为这个线段的长度 找一个点的序列,使得代价总和最小,求这个最小代价。 其中n<300n<300n<300 方法 递归分治(TLE) 以题目为例[2,5,10, 展开全文
头像 摸鱼学大师
发表于 2021-08-02 16:40:07
思路: 题目的主要信息: 给定一个一个长为的线段,和一系列切割点 切割点的成本等于切割后产生的两段线段的和 要求所有切割点的最小切割成本和 方法一:动态规划具体做法:我们可以用动态规划解决这个问题,创建辅助数组dp,其中用 表示 之间(前闭后开)的切割点的最小成本,只要完善dp数组,最后的就是 展开全文
头像 牛一霸
发表于 2021-08-16 17:23:47
切割成本 描述 将一条长度为x的线段切成若干段,切割点已给出,每次切割的成本为切割后产生的两段线段长度之和,求最小的切割成本。 示例 输入:20,[2,5,10,18] 返回值:45 说明:线段长为20,切割点为[2,5,10,18]。 第一种方案: 1.先切开第 展开全文