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

但是农夫自己没有锯子,请人锯木的酬金跟这段木头的长度成正比。为简单起见,不妨就设酬金等于所锯木头的长度。例如,要将长度为20的木头锯成长度为8、7和5的三段,第一次锯木头花费20,将木头锯成12和8;第二次锯木头花费12,将长度为12的木头锯成7和5,总花费为32。如果第一次将木头锯成15和5,则第二次锯木头花费15,总花费为35(大于32)。

请编写程序帮助农夫计算将木头锯成N块的最少花费。

输入格式:

输入首先给出正整数N(≤104),表示要将木头锯成N块。第二行给出N个正整数(≤50),表示每段木块的长度。

输出格式:

输出一个整数,即将木头锯成N块的最少花费。

输入样例:

8
4 5 1 2 1 3 1 1

结尾无空行

输出样例:

49

结尾无空行

代码样本:

def heap_push(lst, i):
    n = len(lst)
    lst.append(i)
    t = i
    hole = n
    while hole:
        parent = (hole-1)//2
        if lst[parent] > t:
            lst[hole] = lst[parent]
        else:
            break
        hole = (hole-1)//2
    lst[hole] = t
def heap_pop(lst):
    if lst:
        t = lst[-1]
        lst[-1] = lst[0]
        n = len(lst)-1
        hole = 0
        while hole < n and hole*2 + 1 < n:
            son = hole*2+1
            right = hole * 2+2
            if right <  n and lst[right] < lst[son]:
                son = right
            if lst[son] < t:
                lst[hole] = lst[son]
            else:
                break
            hole = son
        lst[hole] = t
        a=lst.pop()
        return a
if __name__ == '__main__':
    n=int(input())
    lst=[]
    lst_1=list(map(int,input().split()))
    for i in lst_1:
        heap_push(lst,i)
    if n==1:
        print(0)
    else:
        print(fan(lst,n))

python 7-33 修理牧场 (25 分) PTA相关推荐

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  9. 7-7 修理牧场 (25分)嗯嗯

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

最新文章

  1. android用于查询数据的方法,android: SQLite查询数据
  2. iOS.访问通讯录.02.写入联系人
  3. LeetCode 21 合并两个有序链表
  4. java oracle.sql.struct转字符串_把Oracle查询结果的一列转换为一字符串
  5. 计算质数通过分区(Partition)提高Spark的运行性能(转载+自己理解)
  6. 【APICloud系列|28】 UIChatBox 模块(聊天输入框)的实现
  7. 《企业级ios应用开发实战》一2.2 iOS框架介绍
  8. ubuntu16下安装mongodb 3.6
  9. ScreenFlow for mac(屏幕录像软件)
  10. 鸿蒙系统共享电脑文件,鸿蒙Hi3516通过NFS挂载方式与Windows共享文件
  11. 什么是TPS,什么是QPS?
  12. win11系统用户名称为中文导致文件夹出现繁体字文件夹、系统路径配置错误修改教程(博主亲测,基于win11,系统文件保留)
  13. 移动终端应用开发上机3组件通信与广播
  14. css中repeat用法,background-repeat 怎么使用
  15. Python包装网页微信API并实现简单自动回复
  16. flink的广播、累加、缓存
  17. Day429430431.订单服务 -谷粒商城
  18. java 文件压缩zip【两种方式】
  19. 计算机系统知识讲解视频教程,考研计算机视频讲解视频教程
  20. Spring EL表达式使用详解

热门文章

  1. rx.xxx 和 io.reactivex.xxx RxJava1 和 RxJava2 和 RxJava3
  2. history路由下,Whitelabel Error Page错误
  3. 为网站配置免费的HTTPS证书 3-4
  4. UEFI模式改为BIOS模式
  5. bootstrap入门步骤
  6. 正则表达式——常用正则表达式验证有效数字、密码、真实姓名、邮箱、身份证号码及其正则捕获懒惰性原理
  7. 明明白白lua的协程(coroutine)
  8. java里speak的用法,speak的用法总结大全
  9. NYOJ 427 Number Sequence
  10. iphone 传android,安卓和苹果手机怎么互传文件_安卓与苹果手机之间互传文件的方法教程_3DM手游...