lintcode:437 书籍复印

题目来源

题目描述

在这里插入图片描述
在这里插入图片描述

题目解析

  • 如果一个抄写员抄写第i本到第j本书,则需要时间A[i] + A[i+1].+ … + A[j]
  • 最后完成时间取决于耗时最长的那个抄写员
  • 需要找到一种分段方式,分成不超过K段,使得所有段的数字之和的最大值最小

在这里插入图片描述

多态

(1)确定状态

  • 最后一步:
    • 最优策略中最后一个抄写员(第k个)抄写的部分是第j到第N-1本书,则需要时间A[j]+…A[N-1]
    • 则需要知道前K-1个人最少需要多少时间抄写完前j本书(第0-j-1本书)
  • 子问题:
    • 要知道K个人最短需要多少时间抄完前N本书
    • 需要先知道k-1个人最短需要多少时间抄完前j本书
  • 状态
    • 设置f[k][i]为k个抄写员最少需要多少时间抄写完前i本书

(2)转移方程

在这里插入图片描述
(3)初始条件和边界情况

  • 初始条件:
    • f[0][i] = 正无穷,因为0个抄写员只能抄0本书
    • f[i][0] = 0,i个抄写员需要0时间抄0本书

(4)计算顺序

  • 从左到右,从上到下
  • 返回f[k][n]

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值