問題描述個人思路:看到這個問題,再看到題目的提示動態規劃,應該要立馬聯想起常見動態規劃模型中的lis(最長上公升子串行),然後再分析題目,不難得出求最多能攔截的飛彈數其實就是求最長下降子串行,而求要攔截所有飛彈最少配備的系統數即求最長上公升子串行,然後就套用即可某國為了防禦敵國的飛彈襲擊,發展出一種飛彈攔截系統。但是這種飛彈攔截系統有乙個缺陷:雖然它的第一發炮彈能夠到達任意的高度,但是以後每一發炮彈都不能高於前一發的高度。某天,雷達捕捉到敵國的飛彈來襲。由於該系統還在試用階段,所以只有一套系統,因此有可能不能攔截所有的飛彈。
輸入飛彈依次飛來的高度(雷達給出的高度資料是不大於30000的正整數),計算這套系統最多能攔截多少飛彈,如果要攔截所有飛彈最少要配備多少套這種飛彈攔截系統。
輸入格式
一行,為飛彈依次飛來的高度
輸出格式
兩行,分別是最多能攔截的飛彈數與要攔截所有飛彈最少要配備的系統數
樣例輸入
389 207 155 300 299 170 158 65
樣例輸出62
#include
#include
using namespace std;
const
int maxn =
100;
vector<
int> a;
int ans, cnt;
intmain()
int dp1[maxn]
, dp2[maxn]
;for
(int i =
0; i < a.
size()
;++i)
else
} ans =
max(ans, dp1[i]);
cnt =
max(cnt, dp2[i]);
} cout << ans << endl << cnt << endl;
return0;
}
藍橋杯 演算法訓練 攔截飛彈
試題 演算法訓練 攔截飛彈 資源限制 時間限制 1.0s 記憶體限制 256.0mb 問題描述 某國為了防禦敵國的飛彈襲擊,發展出一種飛彈攔截系統。但是這種飛彈攔截系統有乙個缺陷 雖然它的第一發炮彈能夠到達任意的高度,但是以後每一發炮彈都不能高於前一發的高度。某天,雷達捕捉到敵國的飛彈來襲。由於該系...
藍橋杯 演算法訓練 攔截飛彈
問題描述 某國為了防禦敵國的飛彈襲擊,發展出一種飛彈攔截系統。但是這種飛彈攔截系統有乙個缺陷 雖然它的第一發炮彈能夠到達任意的高度,但是以後每一發炮彈都不能高於前一發的高度。某天,雷達捕捉到敵國的飛彈來襲。由於該系統還在試用階段,所以只有一套系統,因此有可能不能攔截所有的飛彈。輸入飛彈依次飛來的高度...
藍橋杯 攔截飛彈
某國為了防禦敵國的飛彈襲擊,發展出一種飛彈攔截系統。但是這種飛彈攔截系統有乙個缺陷 雖然它的第一發炮彈能夠到達任意的高度,但是以後每一發炮彈都不能高於前一發的高度。某天,雷達捕捉到敵國的飛彈來襲。由於該系統還在試用階段,所以只有一套系統,因此有可能不能攔截所有的飛彈。輸入飛彈依次飛來的高度 雷達給出...