飛彈攔截(最長非上公升子串行和最長上公升子串行)

2021-10-05 10:20:43 字數 1787 閱讀 7224

題目鏈結

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

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

11行,若干個整數(個數 \le 100000≤100000)

22行,每行乙個整數,第乙個數字表示這套系統最多能攔截多少飛彈,第二個數字表示如果要攔截所有飛彈最少要配備多少套這種飛彈攔截系統。

輸入

1

389 207 155 300 299 170 158 65

輸出

1

2

6

2

第乙個要輸出的顯而易見是最長非上公升子串行, 但是第二問就有意思了, 是求最長上公升子串行。

123

4567

891011

1213

1415

1617

1819

2021

2223

2425

2627

2829

3031

3233

3435

3637

3839

4041

4243

4445

4647

4849

50

//#include #include #include #include "algorithm"

#include "cstdio"

#include "queue"

#include "set"

#include "cstring"

#include "string"

#include "map"

#include "vector"

#include "math.h"

#include "utility" // pair標頭檔案

#define esp 1e-6

using namespace std;

typedef long long ll;

typedef unsigned long long ull;

const int inf = 0x3f3f3f3f;

const int n = 1e6 + 5;

const int m = 1e9 + 5;

int a[n];

int dp1[n], dp2[n], len1, len2;

int main()

len1 = len2 = 1;

dp1[1] = dp2[1] = a[1];

for (int i = 2; i <= n; i++)

printf("%d\n%d\n", len1, len2);

return 0;

}

具體關於lis的總結: 請戳此

1

恰似你一低頭的溫柔,嬌弱水蓮花不勝寒風的嬌羞, 我的心為你悸動不休。  --mingfuyan

攔截飛彈,最長非上公升子串行,DP 二分

題目描述 某國為了防禦敵國的飛彈襲擊,開發出一種飛彈攔截系統。但是這種飛彈攔截系統有乙個缺陷 雖然它的第一發炮彈能夠到達任意的高度,但是以後每一發炮彈都不能高於前一發的高度。某天,雷達捕捉到敵國的飛彈來襲,並觀測到飛彈依次飛來的高度,請計算這套系統最多能攔截多少飛彈。攔截來襲飛彈時,必須按來襲飛彈襲...

攔截飛彈(最長上公升子串行,最長不上公升子串行)

攔截飛彈 noip 1999 題目描述 張琪曼 老師,修羅場是什麼?墨老師 修羅是佛家用語,修羅畢生以戰鬥為目標,修羅場指的是他們之間的死鬥坑,人們通常用 修羅場 來形容慘烈的戰場。後來又引申出 乙個人在困境中做絕死奮鬥 的意思。所以,這其實也在暗示我們,即使是身處絕境,也不要放棄奮鬥。再說了,情況...

飛彈攔截(dp 最長不上公升子串行)

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