NOI 8780 攔截飛彈 入門dp

2021-08-25 10:57:15 字數 1037 閱讀 2753

8780:攔截飛彈描述

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

輸入飛彈依次飛來的高度(雷達給出的高度資料是不大於30000的正整數),計算這套系統最多能攔截多少飛彈。

輸入第一行是乙個整數n(不超過15),表示飛彈數。

第二行包含n個整數,為飛彈依次飛來的高度(雷達給出的高度資料是不大於30000的正整數)。

輸出乙個整數,表示最多能攔截的飛彈數。

樣例輸入

8

389 207 155 300 299 170 158 65

樣例輸出

6
狀態轉移方程:

if(a[j]>=a[i])

dp[i]=max(dp[i],dp[j]+1);                      //dp[i]表示前i位數字形成的最大非遞增序列是多少

**:

#include#include#include#include#include#include#include#includeusing namespace std;

#define inf 0x3f3f3f3f

#define ll long long

#define mem(a,b) memset(a,b,sizeof(a))

#define closeio std::ios::sync_with_stdio(false)

int a[25],dp[25];

int main()

for(i=0;i=a[i])

dp[i]=max(dp[i],dp[j]+1);

} }for(i=0;icout

}

NOI 8780 攔截飛彈 線性dp

總時間限制 1000ms 記憶體限制 65536kb 描述某國為了防禦敵國的飛彈襲擊,發展出一種飛彈攔截系統。但是這種飛彈攔截系統有乙個缺陷 雖然它的第一發炮彈能夠到達任意的高度,但是以後每一發炮彈都不能高於前一發的高度。某天,雷達捕捉到敵國的飛彈來襲。由於該系統還在試用階段,所以只有一套系統,因此...

NOI 8780 攔截飛彈(dfs or dp)

思路1 剛開始想到dfs,n不太大 小於20 每個飛彈有兩種情況,選或不選 揹包問題 選,那麼更新h為當前飛彈高度,並用if剪枝一下 不選,就是跳過它,僅index 1即可 include define fo i,a,b for int i a i 選用 using namespace std in...

攔截飛彈(DP)

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