切香肠 思维二分答案
Posted qq62bae010a10e9
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了切香肠 思维二分答案相关的知识,希望对你有一定的参考价值。
题目地址
思路:
切蛋糕,切钢管 都是二分答案 = =。这种题最重要的一点是先排序找最小的,然后要与最后的答案比较,其它oj上题的数据果然水啊。
这里先乘100减小精度误差。
package jisuanke;
import java.math.BigInteger;
import java.util.Arrays;
import java.util.Comparator;
import java.util.Scanner;
public class MainF
public static void main(String[] args)
int cnt = 0;
Scanner cin = new Scanner(System.in);
int n = cin.nextInt();
int m = cin.nextInt();
double a[] = new double[100005];
for(int i = 0;i < n;i++)
a[i] = 100 * cin.nextDouble();
int l = 1, r = 10000000;
while(l <= r)
int sum = 0;
int mid = (l + r) >>> 1;
for(int i = 0;i < n;i++)
sum += a[i] / mid;
if(sum >= m) l = mid + 1;
else r = mid - 1;
System.out.println(String.format("%.2f",r * 1.0 / 100));
以上是关于切香肠 思维二分答案的主要内容,如果未能解决你的问题,请参考以下文章
The 2019 ICPC Asia Shanghai Regional Contest---H Tree Partition 二分答案,从下往上切最大子树