攔截飛彈(dp 貪心 結論)

2022-06-08 11:54:10 字數 650 閱讀 6727

給定乙個序列,求能覆蓋整個序列的最少的不上公升子串行的個數。

考慮貪心,維護乙個陣列,陣列裡面存的是每個不上公升子串行的最後乙個元素。

遍歷原序列中的每乙個元素,如果當前元素比陣列中所有的元素都大,即它不能作為之前那些不上公升子串行的結尾。因此插入陣列最後。

反之,找到大於等於它的第乙個元素,也就是它可以接在那個元素之後,即可作為那個不上公升子串行的結尾,因此替換掉那個元素。

通過上述過程的分析,發現問題轉化為了求最長上公升子串行問題。

這裡有兩個結論:

「能覆蓋整個序列的最少的不上公升子串行的個數」等價於「該序列的最長上公升子串行長度」

「能覆蓋整個序列的最少的不下降子串行的個數」等價於「該序列的最長下降子串行長度」

#include #include #include #include using namespace std;

const int n = 1010;

int a[n], f[n], g[n];

int main()

ans1 = max(ans1, f[i]);

ans2 = max(ans2, g[i]);

}printf("%d\n%d", ans1, ans2);

return 0;

}

攔截飛彈 貪心

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

攔截飛彈(DP)

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

DP 攔截飛彈

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