1. 程式人生 > >Codevs 1044 攔截導彈

Codevs 1044 攔截導彈

names logs flask scrip 它的 tput app 能夠 log

1044 攔截導彈

1999年NOIP全國聯賽提高組

時間限制: 1 s 空間限制: 128000 KB 題目等級 : 黃金 Gold 題目描述 Description

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

輸入描述 Input Description

輸入導彈依次飛來的高度(雷達給出的高度數據是不大於30000的正整數)

輸出描述 Output Description

輸出這套系統最多能攔截多少導彈,如果要攔截所有導彈最少要配備多少套這種導彈攔截系統。

樣例輸入 Sample Input

389 207 155 300 299 170 158 65

樣例輸出 Sample Output

6

2

數據範圍及提示 Data Size & Hint

導彈的高度<=30000,導彈個數<=20

題解:

#include<iostream>
#include<algorithm>
#include<cstdio>
using namespace
std; int dp[20],p[20],c,s,dd[20]; int main(){ int a=0; while(scanf("%d",&p[a])!=EOF) ++a; for(int i=0;i<a;++i){ dp[i]=1; dd[i]=1; } for(int i=0;i<a;++i){ for (int j=i-1;j>=0;--j){ if(p[i]<=p[j]){ dp[i]=max(dp[i],dp[j]+1
); } else{ dd[i]=max(dd[i],dd[j]+1); } } } for(int i=0;i<a;++i){ c=max(c,dp[i]); s=max(s,dd[i]); } cout<<c<<endl<<s; return 0; }

Codevs 1044 攔截導彈