HDU 1257 最少攔截系統

2022-05-22 12:24:08 字數 1150 閱讀 1586

最長遞增子串行?why?

朦朦朧朧的感覺也許是這樣的。。

大神說要用dilworth定理來證明

無愛了,這個定理先放一放吧

1

//#define local

2 #include 3 #include 4 #include 5 #include 6

using

namespace

std;78

const

int maxn = 1010;9

intdp[maxn];

10int

a[maxn];

1112

int main(void)13

2829

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

30for(j = 1; j < i; ++j)

3136}37

38int ans = 0;39

for(i = 1; i <= n; ++i)

40 ans =max(ans, dp[i]);

41 printf("

%d\n

", ans);42}

43return0;

44 }

**君還是這種演算法比較容易理解:

首先有m個攔截系統,dp[i]是第i個系統的上一發飛彈的高度。

如果下乙個要發射的高度不超過dp[i],則更新dp[i]的值

否則++m,把這個值放到dp[m]裡

but,,,

為什麼這樣算是對的??

1

//#define local

2 #include 3 #include 4 #include 5

using

namespace

std;67

int dp[1010];8

int a[1010];9

10int main(void)11

33}34if(j >m)

35 dp[++m] =input;36}

37 printf("

%d\n

", m);38}

39return0;

40 }

**君

hdu1257 最少攔截系統

解釋 當炮彈乙個接乙個的從空中飛來時,系統可以攔住比它攔住前乙個高度低的炮,比前乙個高的不攔,給第二個系統攔 problem description 某國為了防禦敵國的飛彈襲擊,發展出一種飛彈攔截系統.但是這種飛彈攔截系統有乙個缺陷 雖然它的第一發炮彈能夠到達任意的高度,但是以後每一發炮彈都不能超過...

hdu 1257 最少攔截系統

題目大意 給定一串飛彈的高度,問最少需要多少飛彈攔截系統。思路 lis 分析 首先,至少需要一套攔截系統,一開始可以打到第一顆飛彈的位置。之後每來一顆飛彈更新一下系統能打到的高度。一旦有一顆飛彈所有系統都打不到了,增加乙個系統。那麼就會得到乙個序列,每個系統目前能打到的最高位置。這個序列是遞增的,後...

HDU1257 最少攔截系統

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