Codeforces Round #621 (Div. 1 + Div. 2) Cow and Friend

解题报告:

思路:找到喜欢数字中的最大的数字值,由这个数字的边跳跃次数最小。

模拟过程:下面例举一个样例

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;
}
发布了206 篇原创文章 · 获赞 9 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/jun_____/article/details/104423157