二分的细节有问题
  • 板块题目总版
  • 楼主alwfone
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/5/6 22:10
  • 上次更新2024/5/7 13:04:48
查看原帖
二分的细节有问题
1123515
alwfone楼主2024/5/6 22:10

OJ的题目:
题目描述
暑假期间小C参加了n个培训班,每个培训班都有布置作业,第 i 个学科的作业量为a[i]。恰巧的是小C的妈妈和爸爸会出门旅游去了, t小时后才回来。 小C必须在爸爸妈妈回到家前完成所有的作业,但是可以自行决定做作业的速度 k (每小时完成k的作业量)。 每个小时,她将会选择一科的作业,完成的作业量为 k。如果某个学科的作业量少于 k ,完成这科作业后,这一小时内小C将选择休息。小C喜欢慢慢做作业,请计算她完成任务的最小的k是多少?

输入格式
第一行两个正整数n和t,第二行n个正整数a[i]

输出格式
最小的k的值

样例
输入样例
5 6 8 11 12 13 15
输出样例
13

#include <bits/stdc++.h>
using namespace std;
#define ll long long
ll n,a[1000001],l,r,t,sum;
int main(){
	scanf("%lld%lld",&n,&t);
	for (ll i=1;i<=n;i++)
		scanf("%lld",&a[i]);
	sort(a+1,a+n+1);
	l=1;
	r=100001;
	while(l<r)
	{
		ll mid=(l+r)>>1;
		sum=0;
		for (ll i=1;i<=n;i++)
		{
			if (a[i]%mid==0)
				sum+=(a[i]/mid);
			else
				sum+=(a[i]/mid+1);
		}
		if (sum<=t)
			r=mid;
		else
			l=mid+1;
	}
	printf("%lld",l);
	return 0;
}

求帮忙qwq

2024/5/6 22:10
加载中...