【九度1502】最大值最小化

限时加码!20+主流AI编程工具免费用 购周边加赠Coding Plan Lite,Claude Code、Cursor等即刻畅享,学习进阶更高效! 阅读详情
题目1502:最大值最小化

时间限制:1 秒

内存限制:128 兆

特殊判题:

提交:566

解决:214

题目描述:

在印刷术发明之前,复制一本书是一个很困难的工作,工作量很大,而且需要大家的积极配合来抄写一本书,团队合作能力很重要。
当时都是通过招募抄写员来进行书本的录入和复制工作的, 假设现在要抄写m本书,编号为1,2,3...m, 每本书有1<=x<=100000页,每页所用的时间是1分钟, 把这些书分配给k个抄写员,要求分配给某个抄写员的那些书的编号必须是连续的。每个抄写员的速度是相同的,你的任务就是找到一个最佳的分配方案,使得所有书被抄完所用的时间最少。

输入:

输入可能包含多个测试样例。
第一行仅包含正整数 n,表示测试案例的个数。
对于每个测试案例,每个案例由两行组成,在第一行中,有两个整数m和 k, 1<=k<=m<=500。 在第二行中,有m个整数用空格分隔。 所有这些值都为正且小于100000。

输出:

对应每个测试案例,
输出一行数字,代表最佳的分配方案全部抄写完毕所需要的时间。

样例输入:
2
9 3
100 200 300 400 500 600 700 800 900
5 4
100 100 100 100 100
样例输出:
1700
200
来源:
网易有道2013年校园招聘面试一面试题

二分法求最大值最小化。
#include<cstdio>
#include<cmath>
#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
const int N = 505;
int a[N];
int m,k;
bool judge(int mid) {
	int sum=0,count=1;
	for(int i=0; i<m; i++) {
		if(sum+a[i]<=mid) {
			sum=sum+a[i];
		} else {
			count++;
			sum=a[i];
		}
	}
	return count<=k;
}
int main() {
	int T;
	scanf("%d",&T);
	while(T--) {
		int left=0,right=0;
		scanf("%d%d",&m,&k);
		for(int i=0; i<m; i++) {
			scanf("%d",&a[i]);
			left=max(left,a[i]);
			right+=a[i];
		}
		int mid,ans;
		while(left<=right) {
			mid=left+right>>1;
			if(judge(mid)) {
				ans=mid;
				right=mid-1;
			} else {
				left=mid+1;
			}
		}
		printf("%d\n",ans);
	}
	return 0;
}
题目地址:http://ac.jobdu.com/problem.php?pid=1502


二分法解决“最大化最小值问题” 最大化最小值问题    “最大化最小值”为了提升优化目标中表现最差的成分。这个问题在通信链路中应用比较多,如基站同时和多用户通信,每个基站到用户的通信为一个通信链路,且基站的发射功率是固定的。为了保证所有的通信链路都正常工作,应该去优化最差链路的通信情况,降低信道较好链路的基站发射功率,增加信道较差链路的基站发射功率,这是一个最大化最小值问题。 例题    一座有n(2<=n<=100000)间牛舍的小屋,牛舍排在一条直线上,第i间牛舍在xi(0<=xi<=100 阅读详情

相关推荐

二分法解决最大值最小化问题

问题描述:把一个包含n个正整数的序列划分成m个连续的子序列。设第i个序列的各数之和为S(i),求所有S(i)的最大值最小是多少?例如序列1 2 3 2 5 4划分为3个子序列的最优方案为 1 2 3 | 2 5 | 4,其中S(1),S(2),S(3)分别为6,7,4,那么最大值为7;如果划分为 1 2 | 3 2 | 5 4,则最大值为9,不是最小。

sinat_28310329的博客 1245

题目1502最大值最小化 二分

题目1502最大值最小化 时间限制:1 秒 内存限制:128 兆 特殊判题:否 提交:583 解决:222 题目描述: 在印刷术发明之前,复制一本书是一个很困难的工作,工作量很大,而且需要大家的积极配合来抄写本书,团队合作能力很重要。 当时都是通过招募抄写员来进行本的录入和复制工作的, 假设现在要抄写m本书编号1,2,3...m

老李2009 350

【算法设计与数据结构】二分法解决最大值最小化问题——入门篇

问题描述把一个包含n个正整数的序列划分成m个连续的子序列。设第i个序列的各数之和为S(i),求所有S(i)的最大值最小是多少? 例子: 序列1 2 3 2 5 4划分为3个子序列的最优方案为 1 2 3 | 2 5 | 4,其中S(1),S(2),S(3)分别为6,7,4,那么最大值为7; 如果划分为 1 2 | 3 2 | 5 4,则最大值为9,不是最小。

jiange_zh的博客 7202

最大值最小化(网易有道2013年校园招聘面试一面试题)

题目描述: 在印刷术发明之前,复制一本书是一个很困难的工作,工作量很大,而且需要大家的积极配合来抄写本书,团队合作能力很重要。 当时都是通过招募抄写员来进行本的录入和复制工作的, 假设现在要抄写m本书编号1,2,3...m, 每本书1 输入: 输入可能包含多个测试样例。 第一行仅包含正整数 n,表示测试案例的个数。 对于每个测试案例,每个案例由两行组成,在第一行中,有

logarrow的专栏 1970

九度1502 最大值最小化问题

问题描述: 把一个包含n个正整数的序列划分成m个连续的子序列。设第i个序列的各数之和为S(i),求所有S(i)的最大值最小是多少? 例如序列1 2 3 2 5 4划分为3个子序列的最优方案为 1 2 3 | 2 5 | 4,其中S(1),S(2),S(3)分别为6,7,4,那么最大值为7; 如果划分为 1 2 | 3 2 | 5 4,则最大值为9,不是最小。 [2018.3.18...

apk6909的博客 102

九度OJ】题目1502最大值最小化

题目1502最大值最小化 时间限制:1 秒 内存限制:128 兆 特殊判题:否 提交:591 解决:229 题目描述: 在印刷术发明之前,复制一本书是一个很困难的工作,工作量很大,而且需要大家的积极配合来抄写本书,团队合作能力很重要。 当时都是通过招募抄写员来进行本的录入和复制工作的, 假设现在要抄写m本书编号1,2,3...m, 每本书1&lt;=x&lt;=10000...

想做永动机的滚筒洗衣机 324

用java求最大值oj_九度OJ 1502 最大值最小化(JAVA)

题目1502最大值最小化(二分答案)九度OJJavaimport java.util.Scanner;public class Main {public static int max(int x ,int y){return x > y ? x : y;}public static int solve(int tot , int m , int n ,int a[]){int low =...

weixin_32349561的博客 278

九度OJ 1502 最大值最小化(JAVA)

题目1502最大值最小化二分答案) 九度OJ Java import java.util.Scanner; public class Main { public static int max(int x ,int y){ return x > y ? x : y; } public static i...

weixin_34162228的博客 176

九度 1502最大值最小化(二分法)

题目描述: 在印刷术发明之前,复制一本书是一个很困难的工作,工作量很大,而且需要大家的积极配合来抄写本书,团队合作能力很重要。当时都是通过招募抄写员来进行本的录入和复制工作的, 假设现在要抄写m本书编号1,2,3...m, 每本书1<=x<=100000, 把这些分配给k个抄写员,要求分配给某个抄写员的那些编号必须是连续的。每个抄写员的速度是相同的,你的任务就是找到...

weixin_30439067的博客 81

最大(小)值最小(大)化 (二分法变形)

题目 九度 1502最大值最小化 POJ 3273Monthly Expense POJ 3258 River Hopscotch 思路 1. 读题时若感觉到需要求最大(小)值最小(大)化, 就要考虑使用二分搜索 2. 解题框架: 先初始化一个值 x, 然后根据 x 是否能够满足条件调整 x 的值. 因为 x 是 int 类型, 所以保证 x 能收敛到符合题意 3....

weixin_34303897的博客 123

九度笔记之 最大值最小化

题目 题目1502最大值最小化 时间限制:1 秒 内存限制:128 兆 特殊判题:否 提交:131 解决:55 题目描述: 在印刷术发明之前,复制一本书是一个很困难的工作,工作量很大,而且需要大家的积极配合来抄写本书,团队合作能力很重要。 当时都是通过招募抄写员来进行本的录入和复制工作的, 假设现在要抄写m本书编号1,

KingEasternSun的专栏 2119

九度1502引出的对二分查找的一点总结v1.0

做了九度1502后,发现自己对二分查找越来越不理解了,特别是各种边界情况,left = mid还是left = mid + 1 ? right  = mid 还是 left = mid-1 ? return left ,return mid还是return right?仔细研究后发现这里面大有玄机。于是写下一点点心得体会,免得以后忘记了。 在刘汝佳大神的《算法竞赛入门经典》中的二分查找是这样的

ize 413

九度1502(折半法)

题目1502最大值最小化 时间限制:1 秒 内存限制:128 兆 特殊判题:否 提交:62 解决:21 题目描述: 在印刷术发明之前,复制一本书是一个很困难的工作,工作量很大,而且需要大家的积极配合来抄写本书,团队合作能力很重要。 当时都是通过招募抄写员来进行本的录入和复制工作的, 假设现在要抄写m本书编号1,2,3...m, 每本书1

晓风残月xj 865

打不开磁盘配额linux,九度OJ 1455 珍惜现在,感恩生活 -- 动态规划(背包问题)...

题目描述:为了挽救灾区同胞的生命,心系灾区同胞的你准备自己采购一些粮食支援灾区,现在假设你一共有资金n元,而市场有m种大米,每种大米都是袋装产品,其价格不等,并且只能整袋购买。请问:你用有限的资金最多能采购多少公斤粮食呢?输入:输入数据首先包含一个正整数C,表示有C组测试用例,每组测试用例的第一行是两个整数n和m(1<=n<=100, 1<=m<=100),分别表示经费的金...

weixin_33765959的博客 181

最大值最小化最大值尽量小)

From:http://www.cnblogs.com/gentleming/archive/2010/07/16/1778926.html 给出是个序列,如1 2 3 2 5 4 ,将其划分成m个连续的子序列,每个子序列最少有一个元素,怎样使每个子序列的和的最大值最小 #include &lt;iostream&gt; #include &lt;ctime&gt; using namesp...

nowting的博客 6396

Monthly Expense (最大值最小化二分法)

Farmer John is an astounding accounting wizard and has realized he might run out of money to run the farm. He has already calculated and recorded the exact amount of money (1 ≤ moneyi ≤ 10,000) that

一只小菜鸡的博客 1135
上一篇: 【暑期训练三】晴天系列—G题(二分图最大匹配之匈牙利算法)
下一篇: 【codeforces】29C—Mail Stamps
better_space
博客等级 码龄10年 73粉丝 253原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值