关注
package spring; import java.util.*; public class Main5 { public static void main (String[] args){
Scanner sc = new Scanner(System.in); //准备工作 int n = sc.nextInt(); int m = sc.nextInt(); double[] arr = new double[n]; for(int i=0; i<n; i++)
arr[i] = sc.nextDouble(); //从小到大排序 Arrays.sort(arr); //夹逼锁值,求出上界,再寻值 int poi = 0;//只需要找到有边界 for (int i=0; i < arr.length; i++){ int total = 1; for(int j=i+1; j < arr.length; j++){
total += arr[j]/arr[i]; if(total >= m) break;
} if(total < m) {
poi = i; break;
}
} //开始寻值(这里可以确定上下界限,然后采用折半查找) //下界的最小值为0.01,最大是arr[poi-1],取决于poi>0? arr[poi-1]:0.01 //上界是arr[poi] //折半查找的目的是找到一个值k, //使得k满足 以k为长度可以满足切割数大于等于m段,而以 k+0.01则不行 double rt = arr[poi]; double lf = poi > 0 ? arr[poi-1] : 0.01; double len = BinaryFind(arr, poi, m, lf, rt);
System.out.println(String.format("%.2f", len));
} public static double BinaryFind (double[] arr, int poi,int m, double lf, double rt){ if (lf == rt) return lf; double mid = (lf + rt)/2;
mid = Double.parseDouble(String.format("%.2f", mid));//保留小数点后两位 int m1 = 0; for (int i=poi; i < arr.length; i++){
m1 += arr[i]/mid; if (m1 >m) break;
} int m2 = 0; for (int i=poi; i < arr.length; i++){
m2 += arr[i]/(mid+0.01); if (m2 > m) break;
} if(m1 >= m && m2 < m) return mid;//找到最优解 if (m2 >= m) {
lf = Double.parseDouble(String.format("%.2f", mid+0.01)); return BinaryFind(arr, poi, m, lf, rt);
} return BinaryFind(arr, poi, m, lf, mid);
}
}
查看原帖
点赞 评论
相关推荐
点赞 评论 收藏
分享
点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 2025年终总结 #
170831次浏览 2875人参与
# 找工作,行业重要还是岗位重要? #
85162次浏览 1685人参与
# 职场上哪些行为很加分? #
306500次浏览 3448人参与
# 大家每天通勤多久? #
69446次浏览 440人参与
# 你面试体验感最差/最好的公司 #
16325次浏览 265人参与
# 实习的内耗时刻 #
210864次浏览 1537人参与
# 一人说一个提前实习的好处 #
9835次浏览 197人参与
# 互联网行业现在还值得去吗 #
46829次浏览 351人参与
# 今年你最想重开的一场面试是? #
3686次浏览 65人参与
# 秋招落幕,你是He or Be #
10440次浏览 214人参与
# 重来一次,你会对开始求职的自己说 #
5724次浏览 143人参与
# 实习没事做是福还是祸? #
16033次浏览 245人参与
# 反问环节如何提问 #
126326次浏览 2663人参与
# 礼物开箱Plog #
615次浏览 21人参与
# 团建是“福利”还是是 “渡劫” #
6831次浏览 145人参与
# 我的第一份实习怎么找的 #
208467次浏览 1827人参与
# 工作中听到最受打击的一句话 #
6052次浏览 107人参与
# 比亚迪工作体验 #
74386次浏览 281人参与
# 你小心翼翼的闯过多大的祸? #
10739次浏览 156人参与
# 大厂VS公务员你怎么选 #
74395次浏览 681人参与
