【多校】ZZULIOJ 1919 D
来源:互联网 发布:人脸变老软件电脑版 编辑:程序博客网 时间:2024/04/30 12:49
1919: D
Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 241 Solved: 69
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
haut
这个题就是个二分……分最大值。
我好像做过类似的题,但是做的这个题的时候是忘了类似的题怎么做的的……再记一下吧。=。=
#include<stdio.h>#include<string.h>int a[50000+10];int n,m;int OK(int x){int i;int s=0,k=0;for(i=0;i<n;i++){s+=a[i];if(s>x){k++;s=a[i];}}if(s>0) k++;if(k<=m)return 1;return 0;}int main(){int i,T;scanf("%d",&T);while(T--){scanf("%d%d",&n,&m);int sum=0,l=0;for(i=0;i<n;i++){scanf("%d",&a[i]);if(a[i]>l)l=a[i];sum+=a[i];}int r=sum;int mid,ans;while(l<=r){mid=(l+r)/2;if(OK(mid)){ans=mid;r=mid-1;}elsel=mid+1;}printf("%d\n",ans);}return 0;}
0 0
- 【多校】ZZULIOJ 1919 D
- ZZULIOJ 1919 D
- ZZULIOJ 1919: D【二分】
- zzulioj-1919-D【二分】
- ZZULIOJ-1919: D
- zzulioj 1919: D 晴天分段求和
- zzulioj 1919
- 【zzulioj 1919 二分】
- zzulioj 1808: 小d的翻转游戏 【思维 队列模拟】
- 【zzuliOJ】1919 - 晴天分数字(二分)
- zzulioj 题目1808: 小d的翻转游戏(水题,,想法)
- 郑大第九届校赛-热身赛-zzulioj-1808-小d的翻转游戏
- zzuliOJ 1919:分割序列(二分+限制条件判断)
- 【Zzulioj 1919】多校训练三(二分->最大值最小化)
- zzulioj--1816
- ZZULIOJ--1798
- zzulioj-1895
- zzulioj-1899
- 在控制台和mfc平台下调用caffe库会出现的bug及解决办法
- Qt按钮为什么设置了三态点击样式效果,无法得到预期,enabled属性为何无法选中 - C/C++解惑之Qt
- 程序设计语言学习笔记
- 碎碎念_天天更
- MFC控件实例之Slider Control实例
- 【多校】ZZULIOJ 1919 D
- 二分图--最大匹配
- caffe使用draw_net.py网络结构绘制
- Fiddler使用和数据抓包
- 55. Jump Game
- 你们还在为区块链狂热,Gartner已经站出来帮你认清“五大迷思”了
- MySql判断是否为null或空字符串
- Android Studio如何取消与SVN的关联
- Scala和Java的大整数的关系