组长偏头痛

序号:#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. 当javaScript从入门到提高前需要注意的细节:函数部分
  2. 【转】二维异形件排版算法介绍(二)
  3. 求二叉树中以x为根的子树的深度_还在玩耍的你,该总结啦!(本周小结之二叉树)...
  4. BugkuCTF-Crypto题MathEnglish
  5. SQL Cookbook:一、检索记录(2)从表中检索部分行
  6. 如何通过手机访问本地编写的html页面
  7. 2022年环境影响评价工程师考试评价技术方法练习题及答案
  8. Web后端开发入门(1)
  9. 智能音箱全国产化电子元件推荐方案
  10. Excel怎么快速选中相同背景颜色单元格
  11. 情景分析是什么?我们该如何去理解这个概念?
  12. 铲雪车(信息学奥赛一本通-T1374)
  13. kali linux 如何升级,如何正确更新和升级您的Kali Linux
  14. vmware esx简介
  15. 海思HI3559A SDK文档说明
  16. 【负荷预测】基于改进灰狼算法(IGWO)优化的LSSVM进行负荷预测(Matlab代码实现)
  17. SQL Server数据库实操 第二波 集合查询、datepart()
  18. Qt配置MySql数据库驱动(linux)
  19. python合并ts文件教程
  20. 二级python考试安装python3.5.3时遇到的一些问题及解决方法

热门文章

  1. 深度学习之江湖~那些大神们
  2. c/c++内存分配详解
  3. Laravel Event模块分析
  4. 如何切换DNN编辑器
  5. bootstrap-table初始化配置
  6. hibernate中session 与JDBC中 connection分析
  7. SqlServer中Group By高级使用--Inner Join分组统计
  8. servlet处理多个请求 笔记
  9. oracle tochar fm,oracle的to_char中的fm-Oracle
  10. java实现希尔排序(交换法、移位法) 图解+代码推导