题目描述

对于给定的一个长度为N的正整数数列 A−i ,现要将其分成 M(M≤N) 段,并要求每段连续,且每段和的最大值最小。

关于最大值最小:

例如一数列 4 2 4 5 1 要分成 3 段

将其如下分段:

[4 2][4 5][1]

第一段和为 6 ,第 2 段和为 9 ,第 3 段和为 1 ,和最大值为 9 。

将其如下分段:

[4][2 4][5 1]

第一段和为 4 ,第 2 段和为 6 ,第 3 段和为 6 ,和最大值为 6 。

并且无论如何分段,最大值不会小于 6 。

所以可以得到要将数列 4 2 4 5 1 要分成 3 段,每段和的最大值最小为 6 。

输入输出格式

输入格式:

第 1 行包含两个正整数N,M。

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

输出格式:

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

输入输出样例

输入样例#1:

5 3
4 2 4 5 1

输出样例#1:

6

源代码

#include<iostream>
#include<algorithm>
using namespace std;
int n,m,a[1000000];
bool judge(int x)
{int sum=0,group=1;//组数和清零,组数归1for(int i=1;i<=n;i++){sum+=a[i];//累加和if(sum>x)//当前和>当前值{sum=a[i];//和=当前值group++;//分组}}if(group<=m)//当前组数<需要组数return true;//需要减小右值elsereturn false;
}
int main()
{int l=0,r=0,mid;int i;cin>>n>>m;for(i=1;i<=n;i++){cin>>a[i];l=max(l,a[i]);//设置左值为数列最大值r+=a[i];//设置右值为数列和}while(l+1<r){mid=(l+r)/2;//取中间值if(judge(mid))//进行判断r=mid;else l=mid;}if(judge(l))//判断当前值是否满足条件cout<<l<<endl;elsecout<<r<<endl;return 0;
}

数列分段`Section II`(洛谷-P1182)相关推荐

  1. 二分答案——数列分段 Section II(洛谷 P1182)

    题目选自洛谷P1182 本题解法:二分答案+贪心 思路:首先,分析题目,求最大值的最小化,直接联想到二分,So我们直接二分答案,关键是要怎么去高效的check,我们考虑一个贪心的思路,能加的就加上,不 ...

  2. 洛谷P1182 数列分段Section II 二分答案

    洛谷P1182 数列分段Section II 二分答案 题意:将 n 个 数 分为 m段 求一种方案,使这m段中最大的和 最小 额..可能有点拗口,其实就是说每一种方案,都有对应的 每段和的最大值, ...

  3. 洛谷P1182 数列分段 Section II(二分+贪心)

    题目描述 对于给定的一个长度为N的正整数数列 A1∼NA _{1∼N}A1∼N​,现要将其分成 M(M≤N)M(M≤N)M(M≤N)段,并要求每段连续,且每段和的最大值最小. 关于最大值最小: 例如一 ...

  4. 洛谷P1182 数列分段`Section II`

    . . . . . 分析 首先,分析题目,求最大值的最小化,直接联想到二分 然而关键是要怎么去高效的check 我们考虑一个贪心的思路,能加的就加上,不能则新开一段,所以对于二分的值x,我们从数列a从 ...

  5. 【Luogu1182】数列分段Section II(二分)

    problem 一个长度为N的正整数数列A[i] 将其分成M段,并要求每段连续 求每段和最大值(M段各自的和中最大的那个)最小(某种方案下最小). solution 二分每段和的最大值mid. 如果存 ...

  6. 贪心: Array Splitting(数列分段)(洛谷CF1175D)

    解析 这题可以转化一下: (<神笔马良>....) 计算这些长方形对应下标的总加和 我们可以一层一层往上垒,假设第i层起始点为xi,总和为sumi,再设从1到i的前缀和为si 显然第一层x ...

  7. P1181 数列分段Section I

    传送门:洛谷 P1181 数列分段 AC的代码如下: #include<iostream> #include<cstdio> using namespace std; int ...

  8. 数列分段Section I(洛谷-P1181)

    题目描述 对于给定的一个长度为N的正整数数列A[i],现要将其分成连续的若干段,并且每段和不超过M(可以等于M),问最少能将其分成多少段使得满足要求. 输入输出格式 输入格式: 输入文件的第1行包含两 ...

  9. 洛谷——P1181 数列分段Section I

    题目描述 对于给定的一个长度为NN的正整数数列A_iAi​,现要将其分成连续的若干段,并且每段和不超过MM(可以等于MM),问最少能将其分成多少段使得满足要求. 输入输出格式 输入格式: 第1行包含两 ...

最新文章

  1. JetBrains 2018 中国开发者生态报告:Java 最流行
  2. 我在51CTO微职位学软考——网络工程师
  3. nginx功能扩展整理
  4. STL源代码分析(ch2 内存分配)概述
  5. 中getname_Spring IOC中的灵魂伴侣:BeanFactory ApplicationContext
  6. 聊城大学计算机应用基础函授,聊城大学试题计算机应用基础试题
  7. 计算机组成原理 参考,计算机组成原理参考练习
  8. C# 串口操作系列(1) -- 入门篇,一个标准的,简陋的串口例子。
  9. VMware虚拟机安装Win10教程
  10. 【POJ】1384 Piggy-Bank
  11. HTML之meta属性大全
  12. IntelliJ IDEA文件名颜色分别表示的意思
  13. 操作Excel导入的问题(转)
  14. Atcoder Beginner Contest 260D - Draw Your Cards 解题报告
  15. 命令关闭所有cmd窗口
  16. 第十九节:依次逐个点亮LED之后,再依次逐个熄灭LED的跑马灯程序。
  17. hc-05蓝牙模块调试
  18. Excel VBA:按日期汇总计算输出结果(sumif)
  19. 计算机英语新词的认知语义阐释论文,计算机英文专业论文题目 计算机英文论文题目怎样定...
  20. Google Earth Engine(GEE)——Sentinel-3 OLCI EFR:海洋和陆地彩色地球观测全分辨率数据集

热门文章

  1. OpenCV入门及应用案例:手把手教你做DNN图像分类
  2. STM32之GPIO浮空输入例程
  3. python写传奇脚本,Python趣味打怪:60秒学会一个例子,147段简单代码助你从入门到大师 | 中文资源...
  4. mysql执行的list_CMD如何进入Mysql命令并执行相关查询
  5. 侵犯著作权法定赔偿额上限提高至500万元
  6. JSF请求处理过程(二)请求处理过程总览(FacesServlet#service)
  7. 数据结构基础(20) --图的存储结构
  8. 重温CLR(八 ) 泛型
  9. 应用前台省电秘籍——这些常见功耗雷坑不要再跳了
  10. usermod命令,用户密码管理,mkpasswd命令