思路借鉴了洛谷题解里的这位大佬。
在用这位大佬的思路解题的时候,因为一直在卡四舍五入(菜),所以还是 发一下帮助一下需要的人。
#include<stdio.h>
float l[1000001];
int n,k;
int judge(int x)
{
int i;
int sum=0;
for(i=0;i<n;i++)
{
if(l[i]/(float)x>=1.0)
sum += l[i]/(float)x;
}
if(sum>=k)
{
return 0;
}
else
{
return 1;
}
}
int main()
{
int i;
scanf("%d %d",&n,&k);
for(i=0;i<n;i++)
{
scanf("%f",&l[i]);
l[i]*=1000.0;
}
long int left=0,right=100000001,mid;
while(left<=right)
{
mid=(left+right)/2;
if(mid ==0)
{
break;
}
if(judge(mid))
{
right=mid-1;
}
else
{
left=mid+1;
}
//printf("%d %d %d\n",mid,left,right);
}
(float)mid;
printf("%.3f",(mid-5)/1000.0);
return 0;
}