AcWing 680. 剪绳子Java浮点二分
原题链接
简单
作者:
还想听你的故事
,
2021-01-14 09:22:36
,
所有人可见
,
阅读 631
import java.util.*;
public class Main{
private static int n,m;
private static int N=100005;
private static int nums[]=new int[N];
public static void main(String[]args){
Scanner sc=new Scanner(System.in);
n=sc.nextInt();
m=sc.nextInt();
for(int i=0;i<n;i++) nums[i]=sc.nextInt();
double l=0,r=1e9;
while(r-l>1e-4){
double mid=(l+r)/2;
if(check(mid))l=mid+0.001;
else r=mid;
}
System.out.printf("%.2f",l);
}
private static boolean check(double mid){
int s=0;
for(int i=0;i<n;i++){
s+=nums[i]/mid;
if(s>=m) return true;
}
return false;
}
}
牛哇大神,解决我的疑惑了👍
事实上,浮点二分只需要设置l=mid,r=mid即可