数列分段 Section II

题目描述

给定一个长度为N的正整数数列 A 1 ∼ N A_{1\sim N} A1N,现要将其分成M( M ≤ N M\leq N MN)段,并要求每段连续,且每段和的最大值最小。最大值最小的定义如下:例如一个数列 4 2 4 5 1 4\ 2\ 4\ 5\ 1 4 2 4 5 1 要分成3段。将其如下分段: [ 4 2 ] [ 4 5 ] [ 1 ] [4\ 2][4\ 5][1] [4 2][4 5][1]第一段和为6,第二段和为9,第三段和为1,和的最大值为9。将其如下分段: [ 4 ] [ 2 4 ] [ 5 1 ] [4][2\ 4][5\ 1] [4][2 4][5 1]第一段和为4,第二段和为6,第三段和为6,和的最大值为6。无论如何分段,最大值不会小于6。因此,将数列 4 2 4 5 1 4\ 2\ 4\ 5\ 1 4 2 4 5 1 分成3段,每段和的最大值最小为6。## 输入格式第一行包含两个正整数N和M。第二行包含N个空格隔开的非负整数 A i A_i Ai,表示数列。## 输出格式一个正整数,即每段和的最大值最小为多少。

样例 #1

样例输入 #1

5 34 2 4 5 1

样例输出 #1

6

提示

对于20%的数据,N不超过10。对于40%的数据,N不超过1000。对于100%的数据,N不超过 1 0 5 10^5 105,M不超过N, A i A_i Ai小于 1 0 8 10^8 108,答案不超过 1 0 9 10^9 109

解题思路

这道题可以使用二分查找的思想来解决。首先,我们可以确定最大值的范围,即最大值不会小于数列中的最大值。然后,我们可以使用二分查找来确定每段和的最大值。假设我们猜测的每段和的最大值为mid,我们可以遍历数列,计算每段的和,如果和大于mid,则说明当前段的和已经超过了我们的猜测值,需要将当前段作为一段,然后继续计算下一段的和。如果我们最终得到的段数小于等于M,说明我们猜测的每段和的最大值mid是合理的,我们可以继续尝试更小的值。如果我们最终得到的段数大于M,说明我们猜测的每段和的最大值mid太小了,我们需要尝试更大的值。通过不断调整猜测值的范围,最终我们可以找到每段和的最大值的最小值。

代码实现


import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.io.StreamTokenizer;public class Main {static BufferedReader in = new BufferedReader(new InputStreamReader(System.in));static PrintWriter out = new PrintWriter(new OutputStreamWriter(System.out));static StreamTokenizer sr = new StreamTokenizer(in);static int MAXN = (int) (1e5 + 10);static int[] arr = new int[MAXN];static int n, m;public static void main(String[] args) throws IOException {n = nextInt();m = nextInt();long max = 0, min = 0;for (int i = 1; i <= n; i++) {arr[i] = nextInt();max += arr[i];min = Math.max(arr[i], min);}long mid = 0, l = min, r = max;while (l < r) {mid = l + (r - l) / 2;if (check(mid)) { // 大于等于mr = mid;} else {l = mid + 1;}}out.println(l);out.flush();}private static boolean check(long mid) {long sum = 0, cnt = 1;for (int i = 1; i <= n; i++) {if (sum + arr[i] > mid) {sum = 0;cnt++;}sum += arr[i];}return cnt <= m;}static int nextInt() throws IOException {sr.nextToken();return (int) sr.nval;}}

以上是对题目的解题思路和代码实现的介绍。希望对你有帮助!如果有任何问题,请随时提问。

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

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

相关文章

【知识---GitHub不允许上传大于100M文件该如何解决】

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言步骤 1: 安装 Git LFS步骤 2: 在 Git 项目中启用 LFS步骤 3: 创建并编辑 .gitattributes 文件步骤 4: 提交并推送到远程仓库步骤 5: 将大文件添加到仓库步骤 6:…

卫星影像离线瓦片如何调用?

我们曾为你分享了按区县购买卫星影像并在线调用的方法。 于是就有朋友问&#xff0c;卫星影像瓦片可以离线调用吗&#xff1f; 当然可以&#xff0c;这里就来分享一下卫星影像瓦片离线调用的方法。 卫星影像离线瓦片如何调用&#xff1f; 这里以OpenLayers、Mapbox和Cesiu…

java实现ftp协议远程网络下载文件

引言 在开发过程中&#xff0c;偶尔会遇到网络文件在FTP服务上存储着&#xff0c;对于这种情况想要下载到本地还有些麻烦&#xff0c;我们直接上世界上最简单的代码。 How to do 1.提前引入包 <!--hutool万能工具包--><dependency><groupId>cn.hutool<…

安卓移动设备使用DS file文件管理工具远程访问本地群晖NAS文件

文章目录 1. 群晖安装Cpolar2. 创建TCP公网地址3. 远程访问群晖文件4. 固定TCP公网地址5. 固定TCP地址连接6. 结语 DS file 是一个由群晖公司开发的文件管理应用程序&#xff0c;主要用于浏览、访问和管理存储在群晖NAS&#xff08;网络附加存储&#xff09;中的文件。这个应用…

搭建nodejs服务器

简单搭建nodejs服务器&#xff0c;用于爬虫js逆向. 1、安装镜像源 下载nrm npm install -g nrm 设置下载源&#xff1a;&#xff08;最好使用npm源或者淘宝源&#xff09; 例子&#xff1a;npm config set registry http://registry.npmjs.org 查看是否设置成功&#xff1a…

JVM内存模型解析

JVM内存模型解析 1. 引言 1.1 背景介绍 Java Virtual Machine&#xff08;JVM&#xff09;作为Java程序的运行环境&#xff0c;扮演着关键的角色。它不仅负责解释和执行Java字节码&#xff0c;还通过其独特的内存模型管理着程序运行过程中所需的各种资源。理解JVM内存模型是…

Mac 也能玩文明6!下载安装详细教程

最近朋友给我分享了一个 Mac 玩文明6的方法&#xff0c;丝毫不卡顿&#xff0c;非常流畅&#xff0c;分享给大家 文明6是最新的文明系列游戏&#xff0c;和以往的文明游戏一样&#xff0c;玩家将从石器时代创建文明&#xff0c;然后迈向信息时代&#xff0c;最终通过军事、经济…

openssl3.2/test/certs - 041 - 1024-bit leaf key

文章目录 openssl3.2/test/certs - 041 - 1024-bit leaf key概述笔记END openssl3.2/test/certs - 041 - 1024-bit leaf key 概述 openssl3.2 - 官方demo学习 - test - certs 笔记 /*! * \file D:\my_dev\my_local_git_prj\study\openSSL\test_certs\041\my_openssl_linux_…

netty的常用类以及执行流程

总体概述 类关系 给ServerBootstrap配置两个EventLoopGroup&#xff0c;一个建立连接&#xff0c;一个处理网络io。 EventLoopGroup给EventLoop分配线程。 在 Netty 中&#xff0c;EventLoop 通过不断轮询 Selector 来检测 Channel 上发生的事件&#xff0c;当 Channel 上的事…

考研C语言刷题基础篇之数组(一)

目录 第一题&#xff1a;用数组作为参数实现冒泡排序 不用函数的冒泡排序 冒泡排序原理&#xff1a; 错误的数值传参冒泡排序 错误的原因 就是什么是数组名 正确的数组传参的冒泡排序 数组的地址和数组首元素的地址的区别 第一题&#xff1a;用数组作为参数实现冒泡排…

npm ERR! code CERT_HAS_EXPIRED errno CERT_HAS_EXPIRED

npm ERR! code CERT_HAS_EXPIRED 和 npm ERR! errno CERT_HAS_EXPIRED 都是指npm 在尝试连接到 npm 仓库时遇到了 SSL 证书过期的问题。这可能是由于您使用的 npm 仓库的证书已过期&#xff0c;或者您的系统时间不正确。 解决此问题的方法如下 1.关闭 npm 的 SSL 验证 通常在…

Docker网络配置与自定义IP容器通信

目录 前言 一、docker网络配置 1. bridge 虚拟网桥 2. host 网络模式 3. none 网络模式 4. 自定义container网络模式 二、自定义IP容器通信 1. 自定义IP 2. 创建所需容器&#xff08;mysql&#xff0c;tomcat&#xff09; 3. 准备项目资源 4. 构建Nginx实现负载均衡…

this指向问题以及修改函数的this指向方法

1、什么是this this表示对象 取决于函数调用&#xff08;this表示对象>当前对象>当前环境对象>函数运行时环境对象&#xff09; this就是函数运行时所在的环境对象&#xff08;取决于函数调用>不同场合&#xff0c;this有不同的值&#xff09; 函数的不同使用场…

rsync命令常用参数详解

1、语法 Usage: rsync [OPTION]… SRC [SRC]… DEST or rsync [OPTION]… SRC [SRC]… [USER]HOST:DEST or rsync [OPTION]… SRC [SRC]… [USER]HOST::DEST or rsync [OPTION]… SRC [SRC]… rsync://[USER]HOST[:PORT]/DEST or rsync [OPTION]… [USER]HOST:SRC [DEST] or r…

PyTorch深度学习实战(32)——DCGAN详解与实现

PyTorch深度学习实战&#xff08;32&#xff09;——DCGAN详解与实现 0. 前言1. 模型与数据集分析1.1 模型分析1.2 数据集介绍 2. 构建 DCGAN 生成人脸图像小结系列链接 0. 前言 DCGAN (Deep Convolutional Generative Adversarial Networks) 是基于生成对抗网络 (Convolution…

el-form动态检验无法生效问题

<el-form-item label"状态&#xff1a;"prop"zt"class"bitianxian"><el-select v-model"ruleForm.zt"placeholder"请选择"change"emptyztXM()"><el-option v-for"(item,index) in ZTdata&quo…

PWN入门Protostar靶场Stack系列

Protostar靶场地址 https://exploit.education/protostar/溢出 源码分析 #include <stdlib.h> #include <unistd.h> #include <stdio.h>int main(int argc, char **argv) {volatile int modified; //定义一个变量char buffer[64]; //给…

Git 入门精讲

我们为什么要学习git&#xff1f; 就当下的发展而言&#xff0c;只要你从事开发就一定会接触git。作为最强大的分布式版本控制器&#xff0c;git 与 svn 有着本质上的区别。 Git是一种分布式版本控制系统&#xff0c;每个开发者都可以在本地维护完整的代码库&#xff0c;可以离…

c++ 加密与解密代码(普通加密 + 凯撒加密 + 图灵来了都解不开的加密)

当你和你的好朋友聊天的时候&#xff0c;你们的聊天内容很容易就被看出来&#xff0c;那么小天狼星这边可以给到一些建议~~ 一、用另一种语言 通常来说&#xff0c;使用除中文和其他常用语言外的语言是一个优秀的选择&#xff01; 例如&#xff1a;乌伯克语、阿亚帕涅科语。 …

智能泊车,再上热搜

编者按&#xff1a;相比于行车&#xff0c;低速可控场景&#xff0c;更有利于泊车功能快速迭代。同时&#xff0c;对于部分消费者来说&#xff0c;泊车智能化也是加分项。 智能泊车赛道&#xff0c;正在重新成为各路势力争夺的焦点。而上一次“高潮”&#xff0c;要追溯到2018年…