最少攔截系統 貪心演算法

2021-08-06 07:06:48 字數 979 閱讀 2788

某國為了防禦敵國的飛彈襲擊,發展出一種飛彈攔截系統.但是這種飛彈攔截系統有乙個缺陷:雖然它的第一發炮彈能夠到達任意的高度,但是以後每一發炮彈都不能超過前一發的高度.某天,雷達捕捉到敵國的飛彈來襲.由於該系統還在試用階段,所以只有一套系統,因此有可能不能攔截所有的飛彈.

怎麼辦呢?多搞幾套系統唄!你說說倒蠻容易,成本呢?成本是個大問題啊.所以俺就到這裡來求救了,請幫助計算一下最少需要多少套攔截系統.

input

輸入若干組資料.每組資料報括:飛彈總個數(正整數),飛彈依此飛來的高度(雷達給出的高度資料是不大於30000的正整數,用空格分隔)

output

對應每組資料輸出攔截所有飛彈最少要配備多少套這種飛彈攔截系統.

sample input

8 389 207 155 300 299 170 158 65

sample output

2

思路:建立乙個陣列,記錄已經投入使用的飛彈攔截系統當前攔截上限,

高度最大為30000的正整數,最多每個一公尺乙個系統,所以開30005的

陣列足夠了,為了使得使用的攔截系統最少,自然是要考慮使用與當前高度最

接近的系統攔截(應該是貪心演算法);如果所有系統的高度均小於飛彈的高度,

則增加攔截系統

**:#include#define max 30005

#define inf 0x3f3f3f3f

#include#includeusing namespace std;

int n,cnt;

int dp[max];//記錄每套攔截系統當前可以達到的最大高度

int main(){

while(scanf("%d",&n)!=eof){

memset(dp,0,sizeof(dp));

cnt=0;

int i,j,h;

for(i=0;i=h&&dp[j]-h

最少攔截系統(貪心演算法)

題解 這道題不能上來就sort排序直接做,要根據它給的數一步一步來做,而且這道題也是用的貪心演算法,總是要找到最優解,比如說有兩個裝置200 300 而這個炮彈是100,顯然這兩個裝置都能抵擋,但是最優的是用200的,否則就會產生浪費,使結果不準確。做法 我做的是每次找到乙個就把原來的裝置更新下,並...

最少攔截系統(貪心)

description 某國為了防禦敵國的飛彈襲擊,發展出一種飛彈攔截系統.但是這種飛彈攔截系統有乙個缺陷 雖然它的第一發炮彈能夠到達任意的高度,但是以後每一發炮彈都不能超過前一發的高度.某天,雷達捕捉到敵國的飛彈來襲.由於該系統還在試用階段,所以只有一套系統,因此有可能不能攔截所有的飛彈.怎麼辦呢...

最少攔截系統(貪心)

g 最少攔截系統 time limit 1000ms memory limit 32768kb 64bit io format i64d i64u submit status description 某國為了防禦敵國的飛彈襲擊,發展出一種飛彈攔截系統.但是這種飛彈攔截系統有乙個缺陷 雖然它的第一發炮...