美文网首页
437. 书籍复印

437. 书籍复印

作者: 薄荷糖的味道_fb40 | 来源:发表于2019-05-18 16:49 被阅读0次

描述

给定 n 本书, 第 i 本书的页数为 pages[i]. 现在有 k 个人来复印这些书籍, 而每个人只能复印编号连续的一段的书, 比如一个人可以复印 pages[0], pages[1], pages[2], 但是不可以只复印 pages[0], pages[2], pages[3] 而不复印 pages[1].

所有人复印的速度是一样的, 复印一页需要花费一分钟, 并且所有人同时开始复印. 怎样分配这 k 个人的任务, 使得这 n 本书能够被尽快复印完?

返回完成复印任务最少需要的分钟数.

样例

样例 1:

输入: pages = [3, 2, 4], k = 2
输出: 5
解释: 第一个人复印前两本书, 耗时 5 分钟. 第二个人复印第三本书, 耗时 4 分钟.
样例 2:

输入: pages = [3, 2, 4], k = 3
输出: 4
解释: 三个人各复印一本书.

思路:

dp[k][n]表示前k个人复印n本书籍最少用的时间。同样从终止条件开始考虑,可知如果最后一个人抄写范围从第j本书到第n-1本书,则dp[n][k]=\max(dp[k-1][j],\sum_{m=j}^{n-1} pages[m]),并且j是一个范围,必须考虑所有情况的最小值,即dp[n][k]=\min_{j}(\max(dp[k-1][j],\sum_{m=j}^{n-1} pages[m]))。具体实现如下。

class Solution {
public:
    /**
     * @param pages: an array of integers
     * @param k: An integer
     * @return: an integer
     */
    int copyBooks(vector<int> &pages, int k) {
        // write your code here
        int n=pages.size();
        if(!n)
        {
            return 0;
        }
        if(k>n)
        {
            k=n;
        }
        vector<vector<int>> dp(k+1,vector<int>(n+1,INT_MAX));
        for(int i=0;i<=k;i++)
        {
            dp[i][0]=0;
        }
        for(int i=1;i<=k;i++)
        {
            for(int j=1;j<=n;j++)
            {
                int sum=0;
                for(int m=j;m>=0;m--)
                {
                    dp[i][j]=min(dp[i][j],max(dp[i-1][m],sum));
                    if(m>0)
                    {
                       sum+=pages[m-1]; 
                    }
                }
            }
        }
        return dp[k][n];
    }
};

相关文章

  • 437. 书籍复印

    描述 给定 n 本书, 第 i 本书的页数为 pages[i]. 现在有 k 个人来复印这些书籍, 而每个人只能复...

  • Leetcode 437 Path Sum III

    题目链接:437. Path Sum III 题目描述 You are given a binary tree i...

  • 437.关系

    不知哪位伟人说的话,此刻想不起来了,他说“关系就是麻烦”。我基本上认同这个观点,但是我认为还是有例外的,这个例外就...

  • 437. 牢骚

    专注于教学或者是班级管理,是不会觉得烦躁的,毕竟这是本职工作。用心去做,也能看到效果或者个人能力方面的提升。 完成...

  • 数据库之Oracle_0

    437. 查资料,回答下面问题: a. Oracle 公司的诞生和发展 b. Oracle 数据库安装后启动的几个...

  • 复印

    一些文字材料 可以用白纸复印许多份 一个人 他的思想,却不可复制 日子,也可以一天一天的复印 年龄,却不可复制 不...

  • 复印

    复印 七子 城南花开无归期, 是去饮泉中被书写 水 石路斑驳雨纷纷。 衣服 七子 我记我停下 一座通向红 门径 而...

  • 复印

    听说这本书老贵了 花了花花半个月工资买的 不知道他肯不肯 借过来给我复印

  • 复印

    我把画笔藏在瞳孔里 快速在你身上来回勾划 悄悄复印在脑海里 千山万水总是你的眼睛 扑翅之鸟总是你的姿态 波涛汹涌是...

  • 437. 等你,回来

    沉默着脑子不想,不思一片空白时空无前,无后一片混沌 我真想这样坐着意识归于一点我真想这样坐着时空归于一点 送你,出...

网友评论

      本文标题:437. 书籍复印

      本文链接:https://www.haomeiwen.com/subject/cjvtzqtx.html