1048 飛彈防禦系統

2021-07-16 13:41:45 字數 972 閱讀 6013

時間限制: 1 sec  

記憶體限制: 128 mb

提交: 305  

解決: 75 [

提交][

狀態][

討論版]

某國為了防禦敵國的飛彈襲擊,開發出一種飛彈攔截系統。但是這種飛彈攔截系統有乙個缺陷:雖然它的第一發炮彈能夠到達任意的高度,但是以後每一發炮彈都不能高於前一發的高度。某天,雷達捕捉到敵國的飛彈來襲,並觀測到飛彈依次飛來的高度,請計算這套系統最多能攔截多少飛彈。攔截來襲飛彈時,必須按來襲飛彈襲擊的時間順序,不允許先攔截後面的飛彈,再攔截前面的飛彈。 

每組輸入有兩行,

第一行,輸入雷達捕捉到的敵國飛彈的數量k(k<=25),

第二行,輸入k個正整數,表示k枚飛彈的高度,按來襲飛彈的襲擊時間順序給出,以空格分隔。

每組輸出只有一行,包含乙個整數,表示最多能攔截多少枚飛彈。

8

300 207 155 300 299 170 158 65

6

思路:

我們可以採用倒推的方法,也就是說,從最後一枚飛彈開始,如果只有那一枚,顯然攔截量為f[1] = 1,再往前看一枚,現在一共有2枚飛彈,如果前面那枚比後面的飛得低,那麼f[2] = f[1] + 1,......可以想象,每次往前加一枚飛彈,射擊該飛彈的最大攔截量f[i]為f[i-1] + 1,也就是說只要找到i-1枚飛彈中攔截量最大且比第i枚低的飛彈,然後再把它攔截的飛彈數加一即可...當然,必須設定乙個初始值為0,如果沒有,那麼最大攔截量就為0 + 1了。

**如下:

#includeusing namespace std;

int main()

c[k]=max+1;

k--;

} int max(1);

for(int i=0;imax)

max=c[i];

} cout<

飛彈防禦系統

飛彈防禦系統 為了對抗附近惡意國家的威脅,r國更新了他們的飛彈防禦系統。一套防禦系統的飛彈攔截高度要麼一直嚴格單調上公升要麼一直嚴格單調下降。資料範圍 1 n 50 輸入樣例 5 3 5 2 4 1 0輸出樣例 2樣例解釋 對於給出樣例,最少需要兩套防禦系統。一套擊落高度為3,4的飛彈,另一套擊落高...

飛彈防禦系統 飛彈攔截系統

題目鏈結 引言 請忽略 今天是小白acm集訓的日子,然後資料結構實在是太難了,真是學不動了,然後就只能無助地去複習以前的題了,記得以前在sdut程設二裡面有一道題叫最少攔截系統,它是一道貪心,我個人覺得最長上公升子串行的思路跟它有些相似。我們先分析一下這道題,引入一下這道最少攔截系統的題幹和 最少攔...

DP LIS 飛彈防禦系統

為了對抗附近惡意國家的威脅,r國更新了他們的飛彈防禦系統。一套防禦系統的飛彈攔截高度要麼一直 嚴格單調 上公升要麼一直 嚴格單調 下降。例如,一套系統先後攔截了高度為3和高度為4的兩發飛彈,那麼接下來該系統就只能攔截高度大於4的飛彈。給定即將襲來的一系列飛彈的高度,請你求出至少需要多少套防禦系統,就...