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