组长偏头痛

序号:#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;
}

小米oj 组长偏头痛(二分)的更多相关文章

  1. [小米OJ] 10. 爬楼梯

    dp 另: 小米oj上的测试样例是错的 ; ) function solution(line) { if (line == 0) return 0; if (line == 1) return 1; ...

  2. 小米OJ刷题日志

    虽然这OJ上的题比较水,但还是挺有意思的.关键是能赚钱 特别是提交方式 居然不支持C++,垃圾OJ 4. 最长连续数列 排序后dp 5. 找出旋转有序数列的中间值 写个排序就做完了. 6. 交叉队列 ...

  3. 小米oj 不要乱改代码(并查集)

     不要乱改代码 序号:#91难度:非常难时间限制:2000ms内存限制:50M 描述 最近小米公司内爆发了一种名叫"瞎改我代码就会死"的传染病. 传播方式是只要与染病者共同编辑过一 ...

  4. 小米 OJ 编程比赛 01 月常规赛_灯_找规律

     灯 序号:#125难度:有挑战时间限制:1000ms内存限制:32M 描述 一个屋子有 n 个开关控制着 n 盏灯,但奇怪的是,每个开关对应的不是一盏灯,而是 n-1 盏灯,每次按下这个开关,其对应 ...

  5. 小米 OJ 编程比赛 03 月常规赛

    A.数学等式 数据比较小,可以暴力+折半枚举. #include<bits/stdc++.h> #define ll long long #define rep(i,a,b) for(in ...

  6. 随手练——小米OJ 高弗雷勋爵

    高弗雷勋爵 题目链接:https://code.mi.com/problem/list/view?id=113 这个解法比较暴力,主要需要注意的是一颗子弹 弹死两个及以上的情况. #include & ...

  7. 小米OJ 有多少个等差数列

    题目链接 https://code.mi.com/problem/list/view?id=20 代码 #include <bits/stdc++.h> using namespace s ...

  8. 【小米oj】找出单独的数字

    题目链接:https://code.mi.com/problem/list/view?id=2&cid=0&sid=26251#codearea 描述 给出N个数字.其中仅有一个数字出 ...

  9. 小米 OJ 编程比赛 02 月常规赛

    Carryon 数数字 描述 Carryon 最近迷上了数数字,然后 Starry 给了他一个区间[l,r] ,然后提了几个要求, 需要将 ll 到 rr 之间的数全部转化成 16 进制,然后连起来. ...

随机推荐

  1. Python 线程&进程与协程

    Python 的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚本解释程序,作为ABC语言的一种继承.Py ...

  2. 第二讲,NT头文件格式,以及文件头格式

    今天详解NT 头格式,以及文件头格式,以及作用, 关于DOS头文件格式,以及DOSStub昨天的博客已经写过了.主要是分散讲解.便于理解. 一丶最小PE的生成,以及标准PE的生成 ps: (如果直接学 ...

  3. WinSockAPI多线程服务器

    运行效果: 程序: // TcpServer.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <iostream&g ...

  4. SQL游标示例

    DECLARE @@totalNum INT;SET @@totalNum=0;DECLARE @num INT;DECLARE @CustomInfo NVARCHAR(MAX);DECLARE M ...

  5. Dubbo相关的基础

    Dubbo是一款高性能轻量级的java RPC框架,它提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务注册与发现. Dubbo是阿里开源的一个项目,现在已经是Apache的顶级 ...

  6. 设置自己的bat运行文件-自己用,随时扩展

    start "" "E:\SEST_H5" start "" "C:\Program Files\Sublime Text 3\s ...

  7. MUI 支付案例(支付宝/微信)

    首先说明一下,本文借鉴了多位博主的文章,所以会看到很多一样的代码. 写这篇博客主要目的是为了便于后期查看(不好之处,敬请留言吐槽),案例经本人测试,是可以使用的. 先上效果图 前端HTML代码: &l ...

  8. 让theano在windows下能进行GPU并行的配置步骤

    最近在implement DeepLearning.net上面的程序.对于开源的python,最头疼的就是各种package和各种configuration. 而且还是在windows下. 想要让th ...

  9. 第三章、前端之JavaScript

    目录 第三章.前端之JavaScript 一.javaScript的引入方式 二.JavaScript语言的规范 三.语言基础 变量声明 四.数据类型 五.流程控制 六.函数 函数的argument ...

  10. linux——实际工作中如何使用linux

    实际工作中,linux系统都不会在我们自己的电脑上,linux系统安装在机房的服务器上,我们操作linux不可能跑到机房去,所以我们需要有一个工具,能在公司通过网络远程连接到机房的linux服务器上 ...