最少攔截系統

2021-09-02 14:09:29 字數 1133 閱讀 2443

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

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

input

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

output

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

sample input

8 389 207 155 300 299 170 158 65
sample output

2
方法一:普通法(實時與每套系統中的最小值判斷,若小於其中的某個值,則更新跳出迴圈,否則再添一套裝置,最後輸出裝置數)**如下:

#include#include#includeusing namespace std;

int h[100005];

int main()

}if(!flag)

} printf("%d\n",cnt);

} return 0;

}

方法二:dp( 假設dp[i]為當前飛彈所能達到的最遠距離, 如果下乙個高度 h[i]>h[j] 則該飛彈必定不能被當前飛彈命中 飛彈系統的個數需要增加乙個 , 如果我們仔細分析一下,發現該問題變成了典型的求最長上公升子串行lcs問題了 ,最長長度即為所需裝置數目)**如下:

#include#include#include#includeusing namespace std;

int h[100005];

int dp[100005];

int main()

maxn=max(maxn,dp[i]); //一定是實時判斷的,不一定為最後乙個!

} printf("%d\n",maxn);

} return 0;

}

最少攔截系統

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

最少攔截系統

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

最少攔截系統

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