藍橋杯 ALGO 13 攔截飛彈

2021-09-11 20:25:46 字數 1051 閱讀 6554

演算法訓練 攔截飛彈  

時間限制:1.0s   記憶體限制:256.0mb

問題描述

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

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

輸入格式

一行,為飛彈依次飛來的高度

輸出格式

兩行,分別是最多能攔截的飛彈數與要攔截所有飛彈最少要配備的系統數

樣例輸入

389 207 155 300 299 170 158 65

樣例輸出62

分析:用vector和string來讀取單行資料。「以後每一發炮彈都不能高於前一發的高度」,說明需要尋找最長不上公升子串行的長度。同時,需要尋找一共有多少不上公升子串行。由於不上公升子串行單減,若出現後者比前者大的情況,則兩者必定分屬不同的不上公升子串行。因此可以尋找最長上公升子串行,子串行的長度即為不上公升子串行的個數。

**:

#include#include#include#includeusing namespace std;

int main() else

} if (t != "")

vectordp1(v.size(), 1), dp2(v.size(), 1);

int maxn1 = -1, maxn2 = -1;

for (int i = 0; i < v.size(); i++)

if (v[j] < v[i])

} maxn1 = max(dp1[i], maxn1);

maxn2 = max(dp2[i], maxn2);

} cout << maxn1 << endl;

cout << maxn2 << endl;

return 0;

}

藍橋杯 攔截飛彈

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

藍橋杯 演算法訓練 攔截飛彈

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

藍橋杯題目練習 攔截飛彈

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