整数二分——数列分段

news/2024/11/14 15:34:50/文章来源:https://www.cnblogs.com/Xuxuan18/p/18546101

洛谷P1182数列分段

题目描述

对于给定的一个长度为N的正整数数列A1~N,现要将其分成M(M<N)段,并要求每段连续,且每段和的最大值最小。
关于最大值最小:
例如一数列42451要分成3段。
将其如下分段:
[42][45][1]
第一段和为6,第2段和为9,第3段和为1,和最大值为9。
将其如下分段:
[4][2 4][5 1]
第一段和为4,第2段和为6,第3段和为6,和最大值为6。
并且无论如何分段,最大值不会小于6。
所以可以得到要将数列42451要分成3段,每段和的最大值最小为6。

输入格式

第1行包含两个正整数N,M。
第2行包含N个空格隔开的非负整数Ai,含义如题目所述。

输出格式

一个正整数,即每段和最大值最小为多少。

输入输出样例

输入1
5 3
4 2 4 5 1
输出1
6

代码示例

#include<algorithm>
#include <numeric>
using namespace std;
const int N=1e6;
int q[N];
int n;
bool check(long long mid,int M)
{int count=1;long long sum=0;for(int i=0;i<n;i++){if(q[i]+sum>mid){count++;sum=q[i];}else{sum=sum+q[i];}if(count>M)return false;}return true;
}
int main() {int M;scanf("%d %d",&n,&M);for(int i=0;i<n;i++){scanf("%d",&q[i]);}long long l = *max_element(q, q + n);  // l是数组中最小的元素long long r = accumulate(q, q + n, 0LL);  // r是数组的总和while(l<r){long long mid=(l+r)/2;if(check(mid,M)){r=mid;}elsel=mid+1;}cout<<l;return 0;
}```

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

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

相关文章

使用IDEA插件(dbDoc)生成数据库字典

https://blog.csdn.net/taotao6086/article/details/123324472 https://github.com/godmaybelieve

视频智能分析网关视频分析网关吸烟检测预警厂区吸烟行为监测系统

在工业生产和公共安全管理中,吸烟行为的监测和控制是一个重要而紧迫的问题。尤其是在厂区这样的特殊环境中,吸烟不仅违反了安全生产规定,更可能引发火灾等严重安全事故。随着人工智能技术的发展,吸烟检测视频分析网关应运而生,为厂区吸烟行为监测提供了一种高效、智能的解…

时区计算,冬夏令时, 计算历史某一刻的某地区的时区

首先来聊聊冬夏令时 ‌冬令时和夏令时是为了节约能源和充分利用光照资源而设立的时间制度。‌在夏季,许多国家和地区会将时钟拨快一小时,称为夏令时,以便让人们早起早睡,减少照明用电。而在冬季,时钟会拨回标准时间,称为冬令时。‌ 历史背景和实施国家 夏令时的概念最早由…

【跟着阿舜学音乐-笔记】1.09音程与协和度

音程 音程是指两个音之间的距离,即一个音到另一个音经过了多少个音高的音高单位。 其中,所经历的音高单位的数量叫做音数。具有不同音数的音之间的距离叫做度。 音程的下方较低的音称为根音(该说法也用于和弦中,指原位中最低的音),上方较高的音称为冠音。以下给出各音程的…

find me-WP

首先给了四张图片第一张宽高有问题修复一下,之后感觉不对劲少了IDAT,修复一下 49444154就好了 修复好第一张图片之后发现了二维码ZmxhZ3s0X3 在第二张图片发现了压缩包提取出来但解压不了 需要把7Z换成PK解压之后在618发现1RVcmVfc 第四张图片发现cExlX1BsY 第五张Yzcllfc0lN…

某大型商超客户采购数据分析(Spark实战)

写了一些使用sparksql以及spark机器学习来进行数据分析的东西,希望能给大家做一些参考项目需求:对某大型商超客户采购数据集进行数据分析 数据来源:https://www.heywhale.com/mw/dataset/656069b19a74cc18269207c4/content首先使用Spark读入数据集,读入文件前要先将文件转为…

2024鹏城杯-re

Rafflesia 先去花指令 a = H@^jHwpsH)[jH{M/\\tBBK_|-O{W.iJZ7\\)|~zaB^H+Lwv{SS|-j@\\_[Y flag = for i in range(len(a)):flag += chr(ord(a[i])^0x18) print(flag)PXFrPohkP1CrPcU7DlZZSGd5WcO6qRB/D1dfbyZFP3ToncKKd5rXDGCA 接着是tls改了表 HElRNYGmBOMWnbDvUCgcpu1QdPqJ…

IDEA如何创建web项目及tomcat设置等

一、Java EE插件启用 1.在启动IDEA时,点击右下角并进入Plugins设置2.选择Java EE相关插件,点击OK然后重启二、创建Web项目 1.点击File->New Project,点击Java Enterprise,勾选web Application。确保已选择正确的jdk2.输入项目名称和存放路径,点击Finish完成三、设置tomca…

.net core生成二维码

安装Net.Codecrete.QrCodeGenerator dotnet add Net.Codecrete.QrCodeGenerator var qr = QrCode.EncodeText("https://baidu.com", QrCode.Ecc.Medium); var bytes = qr.ToBmpBitmap(0, 5, 0, 16777215);//5表示单个像素大小,可按需调整,0表示背景色白色,1677721…

Nuxt.js 应用中的 schema:beforeWrite 事件钩子详解

title: Nuxt.js 应用中的 schema:beforeWrite 事件钩子详解 date: 2024/11/14 updated: 2024/11/14 author: cmdragon excerpt: schema:beforeWrite 钩子是 Vite 提供的一个功能强大的生命周期钩子,允许开发者在 JSON Schema 被写入之前执行自定义操作。利用这个钩子,您可以…

最新项目管理软件趋势,2024年全面盘点11款工具!

2024年,项目管理软件领域继续朝着更加智能化、协同化和自动化的方向发展,满足不同规模企业的需求。随着企业对灵活性、透明度和效率的要求不断提高,项目管理软件在功能和使用方式上持续创新。以下是2024年项目管理软件的最新趋势,并涵盖了国内外多款主流项目管理工具。 1. …

PMP百科网精选:项目管理软件怎么选?这里有答案!

在选择项目管理软件时,企业和项目经理需要综合考虑多个因素,以确保所选的软件能够有效支持项目的各个阶段并满足团队的具体需求。PMP百科网的精选内容通常会根据项目管理的实际需求来推荐适合的软件。以下是选择项目管理软件时应该考虑的几个关键因素: 1. 项目的规模和复杂性…