HDU 1257 最少攔截系統 LIS

2021-08-21 06:41:54 字數 554 閱讀 8259

最少攔截系統

#include #include #include using namespace std;

const int maxn = 30000+5;

int n;

int nums[maxn];

int dp[maxn];//以第i個元素結尾的最長遞增子串行 i從1算起

int ans;

//從題目中可以得知,攔截系統得攔截高度依次降低,所以一開始我是打算求最長下降子串行,後來發現行不通,這種方法只能夠求出每次最多攔截得飛彈得個數。

//所以就開始改變方法,後來發現,如果後面得飛彈得高度比前面得高,那麼一次肯定不能攔截完,所以只要求出最長上公升子串行,就可以求出需要的最少攔截系統。

void lcs() }}

ans = 0;

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

}}int main(void)

lcs();

printf("%d\n", ans);

}return 0;

}

hdu1257 最少攔截系統

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

hdu 1257 最少攔截系統

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

HDU1257 最少攔截系統

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