基础二分(3)
  VrZI4Uwu8BR1 2023年11月02日 115 0


题意:

n种糖果,分给k个人。

每种糖果个数p[i];

要求每个人只能分一种糖果。

求每个人最多能分几个糖果。

例:

输入:

4 11   //n,k

2 4 6 8     //每种糖果的个数

输出:

1                    //每个人最多能分的糖果数


二分答案。。。

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<algorithm>
using namespace std;

int n,k;
int p[10010];
int check(int a)
{
	int i,sum=0;
	for(i=0;i<n;i++)
	{
		int t=p[i];
		while(t>=a){
			t-=a;
			sum++;
		}
	}
	return sum;
}
int main()
{
	int i,j;
	scanf("%d%d",&n,&k);
	int mx=-1;
	for(i=0;i<n;i++){
		scanf("%d",&p[i]);
		mx=max(mx,p[i]);
	}
	int l=0,r=mx;
	while(l<r)
	{
		int mid=(r+l+1)/2;
		int t=check(mid);
		if(t>=k)
			l=mid;
		else
			r=mid-1;
	}
	printf("%d\n",l);
}




【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
VrZI4Uwu8BR1