洛谷P1182 数列分段Section II 二分答案
洛谷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 二分答案相关推荐
- 洛谷P1182 数列分段 Section II(二分+贪心)
题目描述 对于给定的一个长度为N的正整数数列 A1∼NA _{1∼N}A1∼N,现要将其分成 M(M≤N)M(M≤N)M(M≤N)段,并要求每段连续,且每段和的最大值最小. 关于最大值最小: 例如一 ...
- 洛谷P1182 数列分段`Section II`
. . . . . 分析 首先,分析题目,求最大值的最小化,直接联想到二分 然而关键是要怎么去高效的check 我们考虑一个贪心的思路,能加的就加上,不能则新开一段,所以对于二分的值x,我们从数列a从 ...
- 洛谷——P1181 数列分段Section I
题目描述 对于给定的一个长度为NN的正整数数列A_iAi,现要将其分成连续的若干段,并且每段和不超过MM(可以等于MM),问最少能将其分成多少段使得满足要求. 输入输出格式 输入格式: 第1行包含两 ...
- 二分答案——数列分段 Section II(洛谷 P1182)
题目选自洛谷P1182 本题解法:二分答案+贪心 思路:首先,分析题目,求最大值的最小化,直接联想到二分,So我们直接二分答案,关键是要怎么去高效的check,我们考虑一个贪心的思路,能加的就加上,不 ...
- 【Luogu1182】数列分段Section II(二分)
problem 一个长度为N的正整数数列A[i] 将其分成M段,并要求每段连续 求每段和最大值(M段各自的和中最大的那个)最小(某种方案下最小). solution 二分每段和的最大值mid. 如果存 ...
- 数列分段`Section II`(洛谷-P1182)
题目描述 对于给定的一个长度为N的正整数数列 A−i ,现要将其分成 M(M≤N) 段,并要求每段连续,且每段和的最大值最小. 关于最大值最小: 例如一数列 4 2 4 5 1 要分成 3 段 将其如 ...
- 洛谷 [P1024]一元三次方程求解【二分答案】
题目链接:https://www.luogu.org/problemnew/show/P1024 题目描述 有形如:ax3+bx2+cx+d=0 这样的一个一元三次方程.给出该方程中各项的系数(a,b ...
- 二分答案二题-P1182数列分段II,P1873砍树
T1:P1182T1:P1182T1:P1182 数列分段SectionIISectionIISection II 评测记录:https://www.luogu.org/recordnew/lists ...
- P1181 数列分段Section I
传送门:洛谷 P1181 数列分段 AC的代码如下: #include<iostream> #include<cstdio> using namespace std; int ...
最新文章
- updateStateByKey--word count
- 如何查询当前手机的cpu架构,so库导入工程又出异常了?
- 上元之夜丨《大数据》与您共度佳节!
- 35.5. array route
- JavaScript基础功能代码实现
- 三菱伺服驱动器示例_三菱伺服电机+编码器(伺服控制器)的接线示例
- 分享一个OFD批量打印工具
- 北航计算机本科生考研,和计算机考研的师弟师妹们分享一下经验本人本科北航...
- 单晶硅各向异性刻蚀技术
- 我,90后,从审计员到程序员,四年在南京买房
- 多线程结果合并计算CyclicBarrier的使用
- 为什么正则化能减少模型过拟合程度
- Parquet 格式文件
- 遍历读取文件夹下的所有文件
- DH算法 | 迪菲-赫尔曼Diffie–Hellman 密钥交换及RSA(学习笔记)
- linux创建套接字文件类型,Linux日记---0X03文件类型
- torch实现clip by tensor操作
- lightroom初学
- 计算机控制的按钮,电脑键盘上的按钮分别都是什么键?
- 手机连过的WIFI密码忘了怎么办?