百練2945 攔截飛彈(簡單dp)

2021-07-15 11:16:44 字數 1111 閱讀 2551

2945:攔截飛彈

檢視 提交 統計 提示 提問

總時間限制: 1000ms 記憶體限制: 65536kb

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

輸入 輸入有兩行,

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

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

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

樣例輸入

8 300 207 155 300 299 170 158 65

樣例輸出

6思考:dp時陣列中每個元素的初始值都要考慮好了,初始上去,不然會一直wawawawawawawa。多麼痛的領悟。還是太渣。

dp[i]是能轉移到i元素的最多炮彈數。

遞推公式:dp[i] = max (dp[i], dp[j] + 1)

#include 

#include

#include

#include

#include

#include

#include

#include

#include

using

namespace

std;

int k;

const

int maxn = 30;

int h[maxn], dp[maxn];

int main()

dp[1] = 1;

for (int i = 2; i <= k; i++) }}

/*for (int i = 1; i<= k; i++) */

printf ("%d", *max_element(dp + 1, dp + k + 1));

return

0;}

百練 2945 攔截飛彈 DP

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

攔截飛彈(DP)

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

DP 攔截飛彈

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