题目链接

思路如下

题意:这一题让我们在一个 n 个数的序列,分成连续的的 m个子串(一个数也可是一个子串),是在所有子串中 和最大的子串 的和最小.

思路:我们可以用 二分法 来一个一个枚举答案,二分的上限为: 序列中 n 个数之后。下限为:数列中最大的数,通过枚举一个数,看这个数是不是 答案,我们可以考虑:在 这个枚举的数字的基础上能不能把 m子串分割出来,能分割出来来我们调整答案的 下限,分割不出来 调整答案的 上限;

题解如下

#include<iostream>
#include<algorithm>
using namespace std; const int Len = 1e5 + 5;
int ar[Len];
int m,n; bool group(int mid)
{
int sum = 0;
int cnt = 1;
for(int i = 0; i < m; i ++)
{
if(sum + ar[i] <= mid)
{
sum += ar[i];
}
else
{
sum = ar[i];
cnt ++;
}
}
if(cnt > n)
return true;
else
return false;
} void Binary_search(int l,int r)
{
int mid;
while(l <= r)
{
mid = (l + r) / 2;
if(group(mid))
{
l = mid + 1;
}
else
{
r = mid - 1;
}
}
printf("%d",mid);
} int main()
{
//freopen("A.txt","r",stdin);
scanf("%d %d",&m,&n);
int sum = 0;
int mx = -1;
for(int i = 0; i < m; i ++)
{
scanf("%d",&ar[i]);
sum += ar[i];
mx = max(mx , ar[i]);
}
Binary_search(mx,sum); return 0;
}

最新文章

  1. Asp.net页面引用SAP IQ 16 iAnywhere.Data.SQLAnywhere.V4.0.dll报错,语言文件没找到
  2. Debian下安装deb格式安装包
  3. shell条件与循环
  4. 泌尿系统 Excretory system
  5. C语言初学者代码中的常见错误与瑕疵(1)
  6. Java 集合深入理解(14):Map 概述
  7. sql compact 使用EF无法更新的问题?
  8. MySQL查询本周、上周、本月、上个月份数据的sql代码
  9. 使用tornado的gen.coroutine进行异步编程
  10. UI2_NSUserDefaults
  11. iOS10---新特性以及适配点(转)
  12. 第3章文件I/O总结
  13. 2000W条数据,加入全文检索的总结
  14. java中小数的处理:高精度运算用bigDecimal类,精度保留方法,即舍入方式的指定
  15. HTML中&lt;base&gt;标签的正确使用
  16. 在Coding上搭建Hexo个人博客
  17. 转:浅谈SimpleDateFormat的线程安全问题
  18. day17:递归函数
  19. MVC 第一章(下)
  20. Spring 中使用XML配置方式和使用注解方式实现DI

热门文章

  1. mysql从5.5升级到5.7遇到的坑
  2. 第三章、vue基础精讲
  3. docker的安装使用
  4. 04-influxdb基本操作
  5. 事务的隔离级别,mysql中开启事务、django中开启事务
  6. 【Weiss】【第03章】链表例程
  7. python编码的原理以及写入文件中乱码的原因
  8. Lua Table pairs输出顺序问题 (版本差异 解决数字索引间断并兼容字符串索引)
  9. Chrome80调整SameSite策略对IdentityServer4的影响以及处理方案(翻译)
  10. 金融和IT的区别