动态规划-书籍复印

news2024/12/24 2:17:39

动态规划-书籍复印

  • 1 描述
  • 2 样例
    • 2.1 样例 1:
    • 2.2 样例 2:
  • 3 解题方法
    • 3.1 算法解题思路
    • 3.2 算法代码实现

该题是lintcode上的算法题,该题的解题思路是依据九章侯老师提供的解题思路去处理的:
https://www.lintcode.com/problem/437/description

1 描述

给定n本书,第i本书有pages[i]页。有k个人来抄这些书。

这些书排成一行,每个人都可以索取连续一段的书。例如,一个抄书人可以连续地将书从第i册复制到第j册,但是他不能复制第1册、第2册和第4册(没有第3册)。

他们在同一时间开始抄书,每抄一页书都要花1分钟。为了让最慢的抄书人能在最早的时间完成书的分配,最好的策略是什么?

请返回最慢抄书人花费的最短时间。

仅限7天:《微博评论系统项目实战》早鸟价¥199

微信加【jiuzhang1104】备注【微博】了解详情&参与拼团

书籍页数总和小于等于2147483647

2 样例

2.1 样例 1:

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

2.2 样例 2:

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

3 解题方法

3.1 算法解题思路

该算法处理的核心点就是下面的转移方程
在这里插入图片描述

3.2 算法代码实现

public class Solution {
    /**
     * @param pages: an array of integers
     * @param k: An integer
     * @return: an integer
     */
    public int copyBooks(int[] pages, int k) {
        int n = pages.length;
        if (n == 0) {
            return 0;
        }

        if (k > n) {
            k = n;
        }

        int[][] f = new int[k + 1][n + 1];

        f[0][0] = 0;
        for (int i = 1; i <= n; ++i) {
            f[0][i] = Integer.MAX_VALUE;
        }

        //状态转移方程
        //f[k][i] = min (j=0...i) {max{f[k-1][j], A[j]+...+A[i-1]}}
        for (int m = 1; m <= k; ++m) {  // 枚举 k 从 1 到 K
            f[m][0] = 0;
            for (int i = 1; i <= n; ++i) { // 枚举 书 1 到 n 
                f[m][i] = Integer.MAX_VALUE;
                int sum = 0;
                for (int j = i; j >= 0; j--) {
                    // 枚举之前K-1个人抄了j本书的情况,和剩下的书所时间比较取其大,再刷新当前最小记录
                    f[m][i] = Math.min(f[m][i], Math.max(f[m - 1][j], sum));
                    if (j > 0) {
                        sum += pages[j - 1];
                    }
                }
            }
        }
        return f[k][n];
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/593540.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ACL2023 | 黑盒大模型如何微调?清华Decoder Tuning方法提升大模型few-shot场景效果

一、概述 title&#xff1a;Decoder Tuning: Efficient Language Understanding as Decoding 论文地址&#xff1a;https://arxiv.org/abs/2212.08408 代码&#xff1a;GitHub - thunlp/DecT 二、Motivation 现在有很多模型只提供API&#xff0c;没法直接训练&#xff0c;…

关键字 package、import的使用

一、package 关键字的使用 为了更好的实现项目中类型的管理&#xff0c;提供了包的概念使用package声明类或接口所属的包&#xff0c;声明在源文件的首行包 术语标识符&#xff0c;遵循标识符的命名规则、规范&#xff08;xxxyyyzzz&#xff09;、“见名知意”每 “ . ”一次&…

自动化测试selenium环境搭建

自动化测试工具selenium搭建 1. 自动化和selenium基本概念 1) 什么是自动化?为什么要做自动化&#xff1f; 自动化测试能够代替一部分的手工测试&#xff0c;自动化测试能够提高测试的效率。随着项目功能的增加&#xff0c;版本越来越多&#xff0c;版本的回归测试的压力也…

DEI脉冲发生器维修DEI脉冲电源维修PVX-4130

DEI电源维修型号包括:PVX-4130,PVX-4140,PVX-4150,PVX-4120,PVX-5500等型号均可维修。 美国DEI脉冲发生器维修PULSE Generator高压电源维修 DEI脉冲发生器产生高压波形至3500V。 针对高阻抗进行了优化电容性负载&#xff0c;很适合驱动静电引气格栅和偏转板飞行时间质谱仪中粒…

FP独立站不同支付方式的注意事项是什么?

今天&#xff0c;给FP独立站的老板们介绍2个独立站支付方式&#xff0c;以及这些不同的支付方式分别有什么注意事项。 一、PayPal支付 大部分建站平台都支持PayPal支付通道。如果是做美国市场的独立站卖家&#xff0c;PayPal每笔固定收取0.3美金不同比例的手续费&#xff0c;不…

IOS复杂震动AHAP文件编辑指南

简介 目前部分游戏会在播放一些特定的音乐音效时&#xff0c;令设备产生贴合音效的复杂震动&#xff0c;给玩家一个更好的游戏体验。这种复杂震动就是通过苹果的CoreHaptics库实现的。 下面是关于CoreHaptics的官方文档 ​​​​​​​Core Haptics | Apple Developer Docum…

DISC行为模型

DISC行为模型 这是一种研究人行为倾向性的理论&#xff0c;由哈佛大学教授、临床心理学家威廉马斯顿博士提出。它可以用来预测一个人的行为倾向性&#xff0c;让使用者更好地了解自己和影响他人&#xff01; 模型介绍 马斯顿博士发现&#xff0c;行事风格类似的人会展现出类似…

充电桩检测设备厂家TK4860C交流充电桩检定装置

TK4860系列是专门针对现有交流充电桩现场检测过程中接线复杂、负载笨重、现场检测效率低等问题而研制的一系列高效检测仪器&#xff0c;旨在更好的开展充电桩的强制检定工作。 充电桩检测设备是一款在交流充电桩充电过程中实时检测充电电量的标准仪器&#xff0c;仪器以新能源…

Pandora:一个让你呼吸顺畅的ChatGPT

什么是chatgpt ChatGPT是一种基于GPT&#xff08;Generative Pre-trained Transformer&#xff09;的聊天机器人。GPT是一种基于神经网络的自然语言处理模型&#xff0c;它使用大规模的文本数据进行预训练&#xff0c;然后可以用于各种自然语言处理任务&#xff0c;如文本生成…

神州数码DCN路由器之间GREIPsec 配置

拓扑: 说明: R1: g 0/0:192.168.1.1/24 g 0/1:10.1.1.1/24 tunnel 1:172.16.1.1/24 R2: g 0/0:192.168.2.1/24 g 0/1:10.1.1.2/24 tunnel 1:172.16.1.2/24 配置思路: <

阿里Github斩获4.5万Stars!分享的Spring Cloud全栈笔记,你想象不到有多全

如何获得高并发经验&#xff1f; 这是我今天逛知乎的时候系统邀请我回答的一个问题&#xff0c;由此也引发了我的一些思考&#xff1a;为什么人人都想要获得高并发经验&#xff1b;想拥有高并发系统设计技能&#xff1f; 其原因LZ认为主要有以下三点&#xff1a; 涨薪&#…

Pytorch入门(一)数据加载初始化及训练过程监控

Pytorch入门系列大致会更5篇文章不到&#xff0c;以后有机会的话再细细更新吧&#xff0c;主要复习一下Pytorch基本知识&#xff0c;复习一下在大二入门Pytorch的学习笔记&#xff01;原教程位于B站&#xff0c;讲的个人感觉蛮好的。 超级传送门&#xff0c;这个系列教程会很快…

4月刚上岸今日头条(字节)测试开发岗【附答案】

今日头条测试开发面试回顾 字节跳动公司以发展迅猛&#xff0c;待遇优厚和面试难闻名于业界。前段时间面试字节跳动&#xff08;今日头条&#xff09;&#xff0c;并成功拿下高级测试开发工程师岗位后的面试题目回顾,供跳槽季的各位同学参考&#xff01; 一面 自我介绍 编程题…

Java基础-Java常用类2(String类)

本篇文章梳理Java常用类--String类. String类是非常重要的,也是面试的重灾区,一起加油啊~~ 主要讲解String类 : String类的基础知识String类的特性String类的方法String,StringBuilder,StringBuffer之间的比较字符串常量池String应用 : 到底创建了多少个对象 希望给您带来帮助~…

大屏时代:引领信息可视化的新潮流

在信息时代的浪潮下&#xff0c;数据已经成为推动各行各业发展的重要动力。然而&#xff0c;海量的数据如何快速、直观地呈现给用户&#xff0c;成为了一个亟待解决的难题。在这样的背景下&#xff0c;可视化大屏应运而生&#xff0c;以其出色的表现力和交互性成为信息展示的佼…

5.Nginx

文章目录 Nginx编译安装Nginx检查、启动、重启、停止nginx服务添加Nginx系统服务Nginx配置全局配置I/O事件配置HTTP配置Web服务的监听配置日志格式设定location常见配置指令访问状态统计配置 Nginx 一款高性能、轻量级Web服务软件 稳定性高系统资源消耗低对HTTP并发连接的处理能…

【开源项目】银行查询服务的设计和实现

银行查询服务的设计和实现 项目地址github&#xff1a;https://github.com/xl-echo/bankInquiryService项目地址gitee&#xff1a;https://gitee.com/xl-echo/bank-inquiry-service 银行查询服务的设计初衷是&#xff1a;为提供更加便利的查询服务&#xff0c;我们在分布式系…

科研热点|2023年两院院士增选,正式启动 (附增选指南)!

中国科学院 5月31日&#xff0c;中国科学院官网发布《2023年度中国科学院院士增选指南》《中国科学院关于推荐中国科学院院士候选人的通知》等多个文件&#xff0c;正式启动2023年院士增选工作。 2023年度中国科学院院士增选指南 院士制度是党和国家为树立尊重知识、尊重人才…

IOS苹果证书在线制作,无需mac电脑,拒绝钥匙串

IOS苹果证书在线制作&#xff0c;无需mac电脑&#xff0c;拒绝钥匙串 在公众号、小程序出来后&#xff0c;APP开发出现了很多H5的开发框架&#xff0c;比如uniapp等&#xff0c;如果你编译uniapp的程序&#xff0c;打包成ios项目的时候需要两个证书文件&#xff0c;分别是&…

KD7440八通道安规综合测试仪

一、产品概述 KD7440 系列程控耐压测试仪均采用高速 MCU 和大规模数字电路设计的高性能的安规测试仪&#xff0c;其输出电压的大小、输出电压的上升、下降、输出电压的频率由 MCU 控制&#xff0c;能实时显示击穿电流值和电压值&#xff0c;并具有软体校准功能&#xff0c;配备…