组长偏头痛

序号:#28难度:非常难时间限制:1000ms内存限制:10M

描述

临近年底,组长突然患上了偏头痛的毛病,因为他最近从产品经理那里收到了好多需求,需要按排组员尽快完成。 现在用一个数组来表示各个需求需要完成的时间,数组A包含n个元素,表示n个需求以及各个需求需要的时间。现在有个k个组员,因为需求有相关性,每个人只能完成连续一段编号的需求,比如A[1],A[2]由第一个人完成,但是不能A[1],A[3]由第一个人完成,求最少需要的时间完成所有需求。

举例:总共两位组员,三个需求,分别需要3,2,4个小时。第一位组员完成前两个需求,第二位组员完成第三个需求,需要5小时

输入

使用分号(;)分隔两组数据。 第一组为一个整数,表示组长手下一共有几位组员。 第二组为一个使用逗号(,)分隔的数组,表示每个需求消耗的工时。

输出

一个整数,表示完成所有需求所使用的最少时间。

输入样例

2;3,2,4

复制样例

输出样例

5
#include<stdio.h>
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
int n;
int m;
int a[1005];
char buf[100005];
int f(int v)
{if(v==0)return 1;int res=0;while(v>0){res++;v/=10;}return res;
}
bool read()
{if(scanf("%s",buf)==1){n=0;int  v;char *p = strtok(buf,";");sscanf(p,"%d",&v);int len=f(v)+1;m=v;p=strtok(buf+len,",");while(p){sscanf(p,"%d",&v);a[n++]=v;p = strtok(NULL,",");}return true;   }else return false;}
bool ok(int mid)
{int cnt=1;int now=0;for(int i=0;i<n;i++){if(a[i]+now<=mid)now+=a[i];else {if(a[i]<=mid){cnt++;now=a[i];}else return false;       }}return cnt<=m;
}
int main()
{   // freopen("in.txt","r",stdin);while(read()){int L=0;int R=0x3f3f3f3f;int mid;while(R-L>1){mid=(L+R)/2;if(ok(mid))R=mid;else L=mid;}int ans=R;printf("%d\n",ans);}return 0;
}

转载于:https://www.cnblogs.com/linruier/p/9926032.html

小米oj 组长偏头痛(二分)相关推荐

  1. 小米oj #4 最长连续数列

    小米oj #4 最长连续数列 题目链接 描述 输入一个乱序的连续数列,输出其中最长连续数列长度,要求算法复杂度为 O(n) . 输入 54,55,300,12,56 输出 3 输入样例 100,4,2 ...

  2. 【小米笔试题】二分查找算法的变形

    一个有序数组的元素经过循环移动,元素的顺序可能变为"3 4 5 6 7 1 2".怎样才能找出数组中最小的那个元素?假设数组中的元素各不相同. 方法一:(暴力遍历)时间复杂度o(n ...

  3. 2020ICPC(小米邀请赛2) - 2020(二分+贪心)

    题目链接:点击查看 题目大意:给出一个长度为 n 的字符串,问最多可以匹配多少个互不相交的 "2020" 的子序列 题目分析:考虑 "2020" 是由两个 &q ...

  4. 小米oj 找到第 N 个数字 II

    文章目录 题目 输入 输出 输入样例 输出样例 分析 全部代码 题目 假如有一组字符串符合如下规律: S 1 = 1 S 2 = 12 S 3 = 123 S 4 = 1234 - S 9 = 123 ...

  5. 小米 oj 22 题 找到第 N 个数字

    思路:二分找个位置,然后按循环节找就行. #include <bits/stdc++.h> #define LL long long using namespace std; LL n ; ...

  6. 小米OJ (136 小米兔的轨迹)

    小米兔的轨迹序号:#136 难度:一般 时间限制:1000ms 内存限制:80M 描述 有N⋅M 的一个矩阵,小米兔今天很开心,从矩阵左上角的第一个位置开始顺时针从外向里走,很快就走遍了所有的位置,可 ...

  7. 小米OJ 143. 小米兔洗澡澡

    题目描述: 小米兔每天都要去公共浴室洗澡,但是有时候公共浴室人太多,需要排队,小米兔想知道它什么时候能洗澡,你可以帮他算算他要多久才能洗完澡吗? 公共浴室最多可同时容纳 n 个人洗澡,每个人洗澡的时间 ...

  8. 小米OJ上分日志——(119)小米兔跳格子

    序号:#119 难度:一般 时间限制:1000ms 内存限制:30M 描述 米兔爸爸为了让小米兔好好锻炼身体,便给小米兔设置了一个挑战--跳格子. 要吃到自己心爱的胡萝卜,小米兔需要跳过面前一些格子. ...

  9. 小米OJ 119(小米兔跳格子)

    小米兔跳格子序号:#119 难度:一般 时间限制:1000ms 内存限制:30M 描述 米兔爸爸为了让小米兔好好锻炼身体,便给小米兔设置了一个挑战--跳格子. 要吃到自己心爱的胡萝卜,小米兔需要跳过面 ...

  10. 小米oj 有多少个公差为2的等差数列

     有多少个公差为 2 的等差数列 序号:#31难度:有挑战时间限制:1000ms内存限制:10M 描述 给出一个正整数N(2<= N <=10000000),统计有多少公差为2的正整数等差 ...

最新文章

  1. 基于 Asp.Net的 Comet 技术解析
  2. 如何关掉mysql服务呢
  3. EXCEL如何验证重复数据?
  4. 【机器学习】使用 Python 构建电影推荐系统
  5. react学习(58)--this.props进行父子传值
  6. 58岁退休女士,想出去旅游却很难约到合适的伴,怎么办?
  7. [Ubuntu18.04]使用snap
  8. 3.8 51单片机-M74HC138译码器驱动8位数码管
  9. 磁盘碎片与闪存摩擦均衡介绍
  10. 盘点阿里巴巴 34 个牛逼 GitHub 项目
  11. “2019年全国职业院校技能大赛”高职组计算机网络应用竞赛竞赛样题B卷(软件定义网络部分答案参考)
  12. 怎样用c语言画二次函数图像,已知函数表达式如何画图像
  13. Centos7安装加速下载工具aria2
  14. LAS语音识别框架发展简述
  15. 计算机考试打字速度多少,书记员打字速度要求是多少,难不难
  16. css中字母数字自动换行
  17. 五级流水线CPU的实现与改进
  18. android 強制屏幕方向,今日精品安卓App推荐:锁定屏幕旋转方向
  19. matlab 色温图,技术:图文教你了解色温及如何选择色温
  20. 20170305Meetup Git、heroku drop db

热门文章

  1. 通过分析如何一个人的性格笔迹?
  2. C/C++ 知识点---链表操作
  3. 电商网站主动取消客户已支付成功订单感想
  4. javascript单例模式【转载】
  5. 父子组件如何实现通信
  6. 新手干货:Vue - 事件修饰符
  7. SqlServer中获取字符串中的数字部分
  8. 类成员变量初始化总结
  9. 2021-1-28Linux学习纪要
  10. 5e的训练模式全是英文_四块GPU即可训练BigGAN:「官方版」PyTorch实现出炉