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