题目描述
有N根绳子,第i根绳子长度为Li,现在需要M根等长的绳子,你可以对N根绳子进行任意裁剪(不能拼接),请你帮忙计算出这M根绳子最长的长度是多少。
解题思路
绳子不可以拼接,每根绳子都是独立的,正向考虑问题不好解答。换个角度来看,给定一个长度x,剪出m根长度为x的绳子
。上述问题是很好判断的,每根绳子长度//x相加大于等于m即可。
python代码
n,m=map(int,input().split())
s=[int(i) for i in input().split()]
s.sort()
def check(x):
ans=0
for i in s:
ans+=i//x
return ans>=m
l=0
r=s[n-1]
//二分
while((r-l)>0.0001):
mid=(l+r)/2
if check(mid): l=mid
else: r=mid
print('%.2f'%r)