-
题目链接:戳我看题
-
题目分析:一个简单的暴力二分,要注意的是l和r的初始值和l和r之间的关系,一旦相等就应该退出循环。刚开始写的时候就犯了这个错误。
-
java代码:
import java.math.BigInteger;
import java.util.Scanner;
public class Main {
public static int a[] = new int[200010];
public static int n;
public static int k;
public static boolean check(int len) {
int sum = 0;
for (int i = 1; i <= n; i++) {
sum = sum + a[i] / len;
}
if (sum >= k)
return true;
else
return false;
}
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
n = in.nextInt();
k = in.nextInt();
for (int i = 1; i <= n; i++) {
a[i] = in.nextInt();
}
int l = 1, r = 1000000010, mid = 0;
while (l < r) {
mid = (l + r) / 2;
if (check(mid))
l = mid + 1;
else
r = mid;
}
System.out.println(l - 1);
}
}