解题报告:
思路:找到喜欢数字中的最大的数字值,由这个数字的边跳跃次数最小。
模拟过程:下面例举一个样例
3 12
3 4 5
1:找出最大值是5。第一次从(0, 0)跳到(5, 0),此时到(12, 0)的距离是7。边5 5 7可以构成三角形,所以还需跳跃两次。答案为3。
特殊样例:
3 5
1 5 10
按照上面模拟过程找要两次,实际只要一次。
代码:
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
void solve(){
ll n, x, maxn = 0, flag = 0;
scanf("%lld%lld", &n, &x);
for(ll i=0; i<n; ++i){
ll xx;
scanf("%lld", &xx);
maxn = max(maxn, xx);
if(xx == x)flag = 1;
}
if(flag)printf("1\n");
else if(maxn*2 >= x)printf("2\n");
else printf("%lld\n", (x + maxn - 1)/maxn);
}
int main(){
ll t;
scanf("%lld", &t);
while(t--){
solve();
}
return 0;
}
baronLJ 发布了205 篇原创文章 · 获赞 9 · 访问量 1万+ 私信 关注