寒假刷題28:Codeforces Round #621 B. Cow and Friend

題目鏈接:

Codeforces Round #621 B. Cow and Friend

題目解析:

假設當前最大跳躍距離爲X,則當兩點之間直線距離小於等於2X時,一定可以通過兩次跳躍到達。
如圖,從0跳到10,X=5 。 距離剛好等於2X,相切(正好能兩次跳到)。若X>5,兩圓相交,可兩次跳到;若X<5,相離,不能兩次跳到。

在這裏插入圖片描述
因此,我們只需要記錄最遠可跳躍距離,計算通過幾次跳躍可到達即可
特殊情況:
距離dis小於最遠可跳躍距離時,如果有某個可跳躍距離正好等於dis,則一次跳躍可直接到達;否則需要兩次

AC代碼:

#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#define  ll   long long
using namespace std;

int t,n,x,a;
int main()
{
    cin>>t;
    while(t--)
    {
        cin>>n>>x;
        int maxx=0,flag=0;
        for(int i=1;i<=n;i++)
        {
            cin>>a;
            if(a==x) flag=1;
            maxx=max(maxx,a);
        }
        if(flag) {cout<<1<<endl;continue;}
        if(x<maxx) {cout<<2<<endl;continue;}
        if(x%maxx==0) cout<<x/maxx<<endl;
        else cout<<x/maxx+1<<endl;
    }

}

發佈了60 篇原創文章 · 獲贊 23 · 訪問量 6599
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章