小米oj 组长偏头痛(二分)
组长偏头痛
序号:#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 组长偏头痛(二分)相关推荐
- 小米oj #4 最长连续数列
小米oj #4 最长连续数列 题目链接 描述 输入一个乱序的连续数列,输出其中最长连续数列长度,要求算法复杂度为 O(n) . 输入 54,55,300,12,56 输出 3 输入样例 100,4,2 ...
- 【小米笔试题】二分查找算法的变形
一个有序数组的元素经过循环移动,元素的顺序可能变为"3 4 5 6 7 1 2".怎样才能找出数组中最小的那个元素?假设数组中的元素各不相同. 方法一:(暴力遍历)时间复杂度o(n ...
- 2020ICPC(小米邀请赛2) - 2020(二分+贪心)
题目链接:点击查看 题目大意:给出一个长度为 n 的字符串,问最多可以匹配多少个互不相交的 "2020" 的子序列 题目分析:考虑 "2020" 是由两个 &q ...
- 小米oj 找到第 N 个数字 II
文章目录 题目 输入 输出 输入样例 输出样例 分析 全部代码 题目 假如有一组字符串符合如下规律: S 1 = 1 S 2 = 12 S 3 = 123 S 4 = 1234 - S 9 = 123 ...
- 小米 oj 22 题 找到第 N 个数字
思路:二分找个位置,然后按循环节找就行. #include <bits/stdc++.h> #define LL long long using namespace std; LL n ; ...
- 小米OJ (136 小米兔的轨迹)
小米兔的轨迹序号:#136 难度:一般 时间限制:1000ms 内存限制:80M 描述 有N⋅M 的一个矩阵,小米兔今天很开心,从矩阵左上角的第一个位置开始顺时针从外向里走,很快就走遍了所有的位置,可 ...
- 小米OJ 143. 小米兔洗澡澡
题目描述: 小米兔每天都要去公共浴室洗澡,但是有时候公共浴室人太多,需要排队,小米兔想知道它什么时候能洗澡,你可以帮他算算他要多久才能洗完澡吗? 公共浴室最多可同时容纳 n 个人洗澡,每个人洗澡的时间 ...
- 小米OJ上分日志——(119)小米兔跳格子
序号:#119 难度:一般 时间限制:1000ms 内存限制:30M 描述 米兔爸爸为了让小米兔好好锻炼身体,便给小米兔设置了一个挑战--跳格子. 要吃到自己心爱的胡萝卜,小米兔需要跳过面前一些格子. ...
- 小米OJ 119(小米兔跳格子)
小米兔跳格子序号:#119 难度:一般 时间限制:1000ms 内存限制:30M 描述 米兔爸爸为了让小米兔好好锻炼身体,便给小米兔设置了一个挑战--跳格子. 要吃到自己心爱的胡萝卜,小米兔需要跳过面 ...
- 小米oj 有多少个公差为2的等差数列
有多少个公差为 2 的等差数列 序号:#31难度:有挑战时间限制:1000ms内存限制:10M 描述 给出一个正整数N(2<= N <=10000000),统计有多少公差为2的正整数等差 ...
最新文章
- 当javaScript从入门到提高前需要注意的细节:函数部分
- 【转】二维异形件排版算法介绍(二)
- 求二叉树中以x为根的子树的深度_还在玩耍的你,该总结啦!(本周小结之二叉树)...
- BugkuCTF-Crypto题MathEnglish
- SQL Cookbook:一、检索记录(2)从表中检索部分行
- 如何通过手机访问本地编写的html页面
- 2022年环境影响评价工程师考试评价技术方法练习题及答案
- Web后端开发入门(1)
- 智能音箱全国产化电子元件推荐方案
- Excel怎么快速选中相同背景颜色单元格
- 情景分析是什么?我们该如何去理解这个概念?
- 铲雪车(信息学奥赛一本通-T1374)
- kali linux 如何升级,如何正确更新和升级您的Kali Linux
- vmware esx简介
- 海思HI3559A SDK文档说明
- 【负荷预测】基于改进灰狼算法(IGWO)优化的LSSVM进行负荷预测(Matlab代码实现)
- SQL Server数据库实操 第二波 集合查询、datepart()
- Qt配置MySql数据库驱动(linux)
- python合并ts文件教程
- 二级python考试安装python3.5.3时遇到的一些问题及解决方法