思路
- 能刚好走到就只走一步
- 不能恰好走到看看有没有比目标x大的,有的话走两步指定能到
三角形任意两边之和大于第三边(包括等腰三角形)
- 所有能选的步数都小于x,选其中最大的,假设是val
- x % val == 0 能整除 取x / val
- 不能整除 取x / val + 1
时间复杂度
O(n)
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int t = sc.nextInt();
while (t-- > 0) {
int n = sc.nextInt(), x = sc.nextInt();
int min = Integer.MAX_VALUE;
for (int i = 0; i < n; i++) {
int val = sc.nextInt();
if (x > val) {
if (x % val == 0)
min = Math.min(min, x / val);
else
min = Math.min(min, x / val + 1);
} else if (x == val) min = 1;
else min = Math.min(min, 2);
}
System.out.println(min);
}
}
}