problem

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

solution

二分每段和的最大值mid。
如果存在一种划分方案使得每段和为mid成立,就去找更小的。反之找更大的。

!!!第4个点WA的:二分答案进行检查的时候要判断当前的数字是不是大于二分出来的答案,如果大于,就直接特判掉。

codes

#include<iostream>
using namespace std;
int n, m, a[100005];
int check(int x){int sum = 0, cnt = 1;for(int i = 1; i <= n; i++){if(a[i]>x)return false;//特判sum += a[i];if(sum > x){//这里是>;==的时候不行(sum不可以直接等于a[i]啊)。cnt++;sum = a[i];}}return cnt<=m;
}
int main(){cin>>n>>m;for(int i = 1; i <= n; i++)cin>>a[i];int l = 1, r = (int)1e9;while(l < r){int mid = l+r>>1;if(check(mid))r = mid;else l = mid+1;}cout<<l<<'\n';return 0;
}

【Luogu1182】数列分段Section II(二分)相关推荐

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

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

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

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

  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. 数列分段`Section II`(洛谷-P1182)

    题目描述 对于给定的一个长度为N的正整数数列 A−i ,现要将其分成 M(M≤N) 段,并要求每段连续,且每段和的最大值最小. 关于最大值最小: 例如一数列 4 2 4 5 1 要分成 3 段 将其如 ...

  6. 【二分】数列分段(ybtoj 二分-1-1)

    数列分段 ybtoj 二分-1-1 题目大意 给出一个序列A,让你把它分成m段,使每段和最大值最小 输入样例 5 3 4 2 4 5 1 输出样例 6 数据范围 1⩽M⩽N⩽1051\leqslant ...

  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. C++:线程操作之CRITICAL_SECTION用法的介绍和例子理解
  2. 六十五、下一个更大的数系列,单调栈解决方法
  3. JavaFX官方教程(二)之JavaFX体系结构
  4. 上传文件到华为云云服务器,上传文件到云服务器
  5. 【CodeForces - 219D 】Choosing Capital for Treeland (树形dp)
  6. find、grep,which、whereis
  7. sql having是什么意思_图解sql面试题:如何查找重复数据?
  8. 金融业务数字化,用户体验和安全防护双重挑战,你该怎么办?
  9. 代码整理工具_整理了 11 个好用的代码质量审核和管理工具
  10. Membership学习(二)membership入门[xgluxv]
  11. PowerPoint媒体更加适合这样的场合
  12. 题目243-交换输出
  13. 泰山游记:路上瓶装水很便宜,2元
  14. 小米6连接WIFI后无法联网,线刷教程
  15. 闲的没事,自己动手修改上兴3.2源代码(2)
  16. vmware服务器虚拟化培训视频教程,目前网上关于vSphere最详细的视频教程 vSphere全套经典培训视频教程 VMware课程超清...
  17. 云vr和传统vr_宣布我们的VR艺术家居住地
  18. 3星|《一万年的爆发:文明如何加速人类进化》:那些拒绝承认欧洲征服和定居美洲过程中生物学差异的人,事实上也是在否认达尔文进化论...
  19. stata蒙特卡罗模拟(二)模拟中心极限定理
  20. Windows10系统安装好用的截图软件--snipaste

热门文章

  1. 推理集 —— 物品与动物
  2. 强悍的 Vim —— .vimrc(vim 配置文件)
  3. cross-validation:从 holdout validation 到 k-fold validation
  4. uefi下的开机顺序_如何访问UEFI或BIOS并进行设置?
  5. incrby redis 最大值_Redis 的 8 大数据类型,写得非常好!
  6. ios旧版本app网站_这两款app已解锁永久订阅版!
  7. 多元线性回归dw值_SPSS教程10:多元线性回归
  8. python和java哪个好学-学Python 好还是java 好?
  9. python干嘛用的-python都可以做什么用
  10. python代码翻译器-python写的翻译代码