题目信息

题目类型
练习
题目年份
2025
题目题型
编程题
关 键 词
栅栏维修

题目题干

题目描述

1rM100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库
农夫 John(简称FJ)想对围着牧场的一小段栅栏作修补。他测量了栅栏长度,发现一共需要 N(1 ≤ N ≤ 20000)块木板,第 i 块木板的长度是 Li 个单位(1 ≤ Li ≤ 50000)。他买了一块长木板,其长度正好足够切成 N 块这样的木板。忽略每次锯木板的损失。1rM100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库
FJ 发现他并没有锯子,于是他带着这块长木板找到 Don 的农场去问她能不能借一把锯子。Don 并没有把锯子借给 FJ 而是向 FJ 收费,切一段木板一次的花销是木板的总长度。例如切一段 21 单位长的木板一次的花费是 21 单位。Don 让 FJ 决定且木板的顺序。请你帮助 FJ 计算把木板切成要求的 N 段需要的最小费用。切木板有很多种方式,不同切割方式会在切割过程中产生不同的中间长度,导致总花费不同。

输入

1rM100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库
第一行输入 N,表示需要N块木板;1rM100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库
接下来 N 个数表示每段木板的长度要求。

输出

1rM100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库
一个整数,表示进行N-1次切割必须花费的最小金额

样例输入 

3
8 5 8

样例输出 

34

提示



样例解释:
把一块长21的木板切成8、5和8的小块。
木板长度是8+5+8=21。第一次切割的成本是21,应该用来把木板切割成13和8的大小。第二次削减将花费13,并应用于削减13成8和5。这将花费21+13=34。如果将21削减为16,将5削减为5,那么第二次削减将花费16,总共37(比34多)。

答案解析

相关题目

指针数组 题目描述 已知一个总长度不超过10000的字符串,字符串中只包含大写字母“A—Z”、小写字母“a—z”和空格‘ ’。空格用于分割单词,空格的个数不超过1000个。你的任务是将字符串中用空格
栅栏维修题目描述 农夫 John(简称FJ)想对围着牧场的一小段栅栏作修补。他测量了栅栏长度,发现一共需要 N(1 ≤ N ≤ 20000)块木板,第 i 块木板的长度是 Li 个单位(1 ≤ Li
电梯里的爱情 题目描述 细心的同事发现,小 W 最近喜欢乘电梯上上下下,究其原因,也许只有小W自己知道:在电梯里经常可以遇到他心中的女神 PR。 电梯其实是个很暧昧的地方,只有在电梯里,小 W 才有
普通平衡树 题目描述 您需要写一种数据结构(可参考题目标题),来维护一些数,其中需要提供以下操作: 插入 x 数 删除 x 数(若有多个相同的数,应只删除一个) 查询 x 数的排名(排名定义为比当前
如果变量 a 定义为整型、值为 3,变量 b 定义为双精度型、值为 123.456,变量 c 定义为字符型、值为'a',写出下列输出语句的结果。 ① cout << a
如果 a=3,b=3,写出下面输出语句的结果。 printf("%d%d" , a,b);
写出下面语句的运行结果。 float x = 123.456 ; printf("%f%10.2f" , x,x);
写出下面程序的运行结果。 #include<stdio.h> int main() { char c1='a'; int i=97; printf(&
写出下面程序的运行结果。 #include<stdio.h> int main() { char a, b, c; a='Y'; b='e'
输入数据为字符 as,写出下面程序的运行结果。 #include <stdio.h> int main() { char c; c=getchar(); putchar(c);

提示声明

  • 免责声明:本站资源均来自网络或者用户投稿,仅供用于学习和交流:如有侵权联系删除!
  • 温馨提示:本文属于积分文章,需要充值获得积分或升级VIP会员,也可在会员中心投稿获取。

猜你喜欢