zzuli 1919 (二分法 分数列 )
来源:互联网 发布:开个淘宝店铺卖什么好 编辑:程序博客网 时间:2024/05/17 07:34
1919: D
Time Limit: 1 Sec Memory Limit:128 MBSubmit: 194 Solved: 46
SubmitStatusWeb Board
Description
晴天想把一个包含n个整数的序列a分成连续的若干段,且和最大的一段的值最小,但他有强迫症,分的段数不能超过m段,然后他就不会分了。。。他想问你这个分出来的和最大的一段的和最小值是多少?
Input
第一行输入一个整数t,代表有t组测试数据。
每组数据第一行为两个整数n,m分别代表序列的长度和最多可分的段数。
接下来一行包含n个整数表示序列。
0<=n<=50000 1<=m<=n,0<=ai<=10000。
Output
输出一个整数表示和最大的一段的最小值。
Sample Input
13 21 3 5
Sample Output
5
HINT
1 3 5 分成一段可以为1 3 5和为9,分成两段可以为1,3 5或者1 3,5,和最大的一段值分别为8,5,所以答案为5
Source
题意: 都能看明白吧? 毕竟是中文题目嘛...
分析: 当分的块数m大于n时 自然最大段的最小值就是该数列的最大值;当m小于n时,就利用二分的思想对大于最大值的部分二分趋近;
#include<iostream> #include<stdio.h> #include<string.h> #include<math.h> #include<algorithm> #include<stdlib.h> #include<queue> typedef long long ll; using namespace std; const int MAX=50010; int a[MAX]; int n,m; int Judge(int x) { int s=0,cnt=0; for(int i=0; i<n; i++) { if(x<a[i]) return 0; if(s+a[i]<=x) s+=a[i]; else { s=a[i]; cnt++; if(cnt>m-1) return 0; } } return 1; } int Solve(int lo,int hi) { int mid; while(lo<hi) { mid=lo+(hi-lo)/2; if(Judge(mid)) hi=mid; else lo=mid+1; } return lo; } int main() { int max,sum,T; scanf("%d",&T); while(T--) { scanf("%d%d",&n,&m); if(m>n) m=n; max=0; sum=0; for(int i=0; i<n; i++) { scanf("%d",&a[i]); if(max<a[i]) max=a[i]; sum+=a[i]; } printf("%d\n",Solve(max,sum)); } return 0; }
0 0
- zzuli 1919 (二分法 分数列 )
- zzuli 1919(二分)
- zzuli-1919
- zzuli 1919
- 01分数规划问题相关算法与题目讲解(二分法与Dinkelbach算法)
- UVALive 4119 Always an integer(差分数列+模拟)
- ZZUOJ10471: 数列游戏 I(差分数列)
- ZZULI-oj-1919(二分)
- zzuli 1919 F
- Zzuli OJ-----1919二分
- zzuli 1893(二进制)
- zzuli 1922 (棋盘)
- FIBS与差分数列
- zzuli 1919 (晴天分割序列)
- zzuli 1919 (二分 最大值最小化)
- 二分法--案列(烘干衣服 poj3104)
- zzuli 1787: 生化危机 (BFS)
- zzuli 1921 (二进制序列)
- [转载,感觉写的非常详细]DUBBO配置方式详解
- 如何使得向下还原按钮失效?
- Spring如何注入静态变量
- JSP详解--EL表达式
- STL vector中的front方法(4)
- zzuli 1919 (二分法 分数列 )
- 关于Activity和Fragment生命周期的小记录
- 让Java Thread线程暂停的三种方式
- 有哪些编程必备的 Vim 配置?
- pku 2891Strange Way to Express Integers 一元模线性方程组解释+题解
- 数据库 三范式最简单最易记的解释
- session.get()方法中的参数的含义
- Opencv学习笔记(五)--形态学操作
- 图结构练习——最小生成树(prime)