洛谷P1182 数列分段Section II

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

题解 :二分答案 mid为分成的最大值,
然后O(n) 判断 答案 是否可行
贪心的做下去,如果再加上就要超过了,那就新开一段

最后判断开的段数是否小于 m

1、注意要判断 如果当前这个值大于 mid,一个值就已经大于 mid了,那就直接退出
了,否则 ,这个值也只会单独算为一段的,其实他一段都放不下

2、或者还有之中方法 答案从 最大的 a[ i ] 开始枚举。。。

 1 #include <cstdio>
 2 #include <cstdlib>
 3 #include <cstring>
 4 #include <cmath>
 5 #include <string>
 6 #include <algorithm>
 7 #include <iomanip>
 8 #include <iostream>
 9 using namespace std ;
10
11 const int maxn = 100011 ;
12 int n,m,l,r,mid ;
13 int a[maxn] ;
14
15 inline bool check( int mid )
16 {
17     int ans = 0,sum = 0 ;
18     for(int i=1;i<=n;i++)
19     {
20         if(a[ i ]>mid) return 0 ;
21 // 1、注意要判断  如果当前这个值大于 mid,一个值就已经大于  mid了,
22 //那就直接退出了,否则 ,这个值也只会单独算为一段的,其实他一段都放不下
23         if( sum+a[ i ] > mid )
24             ans++,sum = 0 ;
25         sum+=a[ i ] ;
26     }
27     ans++ ;
28     return ans <= m ;
29 }
30
31 int main()
32 {
33     scanf("%d%d",&n,&m) ;
34     for(int i=1;i<=n;i++) scanf("%d",&a[ i ]) ;
35     l = 0,r = 1e9 ;
36     while( l<r )
37     {
38         mid = ( l+r )>>1 ;
39         if(check(mid))
40             r = mid ;
41         else
42             l = mid + 1 ;
43     }
44     printf("%d\n",r) ;
45     return 0 ;
46 }

转载于:https://www.cnblogs.com/third2333/p/6931984.html

洛谷P1182 数列分段Section II 二分答案相关推荐

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

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

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

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

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

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

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

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

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

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

  6. 数列分段`Section II`(洛谷-P1182)

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

  7. 洛谷 [P1024]一元三次方程求解【二分答案】

    题目链接:https://www.luogu.org/problemnew/show/P1024 题目描述 有形如:ax3+bx2+cx+d=0 这样的一个一元三次方程.给出该方程中各项的系数(a,b ...

  8. 二分答案二题-P1182数列分段II,P1873砍树

    T1:P1182T1:P1182T1:P1182 数列分段SectionIISectionIISection II 评测记录:https://www.luogu.org/recordnew/lists ...

  9. P1181 数列分段Section I

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

最新文章

  1. updateStateByKey--word count
  2. 如何查询当前手机的cpu架构,so库导入工程又出异常了?
  3. 上元之夜丨《大数据》与您共度佳节!
  4. 35.5. array route
  5. JavaScript基础功能代码实现
  6. 三菱伺服驱动器示例_三菱伺服电机+编码器(伺服控制器)的接线示例
  7. 分享一个OFD批量打印工具
  8. 北航计算机本科生考研,和计算机考研的师弟师妹们分享一下经验本人本科北航...
  9. 单晶硅各向异性刻蚀技术
  10. 我,90后,从审计员到程序员,四年在南京买房
  11. 多线程结果合并计算CyclicBarrier的使用
  12. 为什么正则化能减少模型过拟合程度
  13. Parquet 格式文件
  14. 遍历读取文件夹下的所有文件
  15. DH算法 | 迪菲-赫尔曼Diffie–Hellman 密钥交换及RSA(学习笔记)
  16. linux创建套接字文件类型,Linux日记---0X03文件类型
  17. torch实现clip by tensor操作
  18. lightroom初学
  19. 计算机控制的按钮,电脑键盘上的按钮分别都是什么键?
  20. 手机连过的WIFI密码忘了怎么办?

热门文章

  1. SAP QA32试图做UD,系统报错-工厂 BTYC中的 QM 基选设置需要维护
  2. 人脸识别屡遭非议 会成为“潘多拉魔盒”吗
  3. AI来编程,码农何去何从?
  4. 超维计算理论可以让AI具有记忆和反应
  5. OpenCV对象检测实例
  6. 2018年终总结之访问量较大的原创文章
  7. 为何生命进化的方向是衰老,而不是永生?
  8. 3 个问题:MIT专家论述关于阻碍AutoML发展的障碍
  9. 阿里平头哥会和AMD一样成为令英特尔头痛的存在吗?
  10. 神秘的中国超算:比肩高铁的世界级领先