山頭狙擊戰

2021-10-10 17:46:35 字數 862 閱讀 7694

山頭狙擊戰

描述為了掩護大部隊,英雄傑克被敵人包圍在某山頭。但他有足夠的彈藥,憑藉自己的勇敢,完全可以將湧上來的敵人乙個乙個乾掉。傑克是個神槍手,只要他的槍膛中有子彈,他就能將在他射程m(用從敵人位置到山頭的直線距離算)以內的乙個敵人瞬間射殺。但如果在射程內沒有敵人,出於節約子彈考慮,傑克會等待敵人靠近然後射擊。 正當傑克為自己的強大而自我膨脹時,他忽然發現了乙個致命的失誤:他攜帶的槍是單發槍,每射出一發子彈都必須花k秒鐘的時間裝子彈。而**的敵人才不會花時間等你換子彈呢。他們始終在以1m/s的速度接近山頭。而如果在乙個敵人到達山頭時傑克無法將他擊斃,那麼我們可憐的傑克就將犧牲在敵人的刺刀下。現在傑克向你發出求助:要保住自己的性命並且殲滅所有敵人,傑克最多只能用多少時間給槍裝上一發子彈? 說明:假設一開始傑克的槍中就有一發子彈,並且一旦確定乙個裝彈時間,傑克始終會用這個時間完成子彈的裝卸。希望你編寫程式計算出傑克最多只能用多少時間給槍裝上一發子彈,幫助傑克脫離險境。

輸入第一行有兩個整數n和m,n代表敵人個數,m代表傑克的射程。接下來有n行,每行乙個整數di,代表每個敵人一開始相對山頭的距離(單位為公尺)。

輸出輸出一行,僅有乙個整數,代表傑克最多能用的換彈時間(單位為秒)。

輸入樣例 1 

6 100

236120

120120

120120

輸出樣例 1

25
#includeusing namespace std;

int a[1000]; //距離

int n,m;//m射程,n敵人數

bool check(int t)

return 1;

}int main()

}cout<}

BSOJ1878 山頭狙擊戰 解題報告

問題描述 為了掩護大部隊,英雄lucky被敵人包圍在某山頭。但他有足夠的彈藥,憑藉自己的勇敢,完全可以將湧上來的敵人乙個乙個乾掉。lucky是個神槍手,只要他的槍膛中有子彈,他就能將在他射程m 用從敵人位置到山頭的直線距離算 以內的乙個敵人瞬間射殺。但如果在射程內沒有敵人,出於節約子彈考慮,luck...