HDU 1257 最少攔截系統(基礎DP,貪心)

2021-06-28 16:50:39 字數 801 閱讀 4229

中文題面。

貪心做法:首先我們是要攔截飛彈的,所以當有一顆飛彈我們現在解決不了的話只能用一套新的攔截系統,攔截這個飛彈,那麼之後這套系統的高階就是此時飛彈的高度a[i],以後比他低的可以攔截....我覺得我寫的這個**有個地方不合理就是每次插入的時候並不是按照最優的情況去做的,最優的情況是找到乙個當前最低的能攔截到飛彈的系統去攔截,我這個是隨便選乙個  看來資料挺水的...

dp做法其實就是最長上公升子串行。嚴格遞增的那種...因為當後面有大於當前最大值的話,那麼前面不管用了幾個系統到這個這大於之前所有值的地方肯定要加一套系統...因為前面的無法攔截,所以只要當後面有乙個大於前面所有的就要加一套系統,那麼就轉化了最長上公升子串行的問題了...

貪心(**不嚴謹,嚴謹的話dp陣列增加的時候要到插入排序):

#include#include#include#include#include#includeusing namespace std;

int dp[13000];//記錄第i套飛彈的此時的高度

int a[13000];

int main()

}if(j==k)

}printf("%d\n",k);

}return 0;

}

以前寫的dp**(hdu做題記錄裡找的不知道啥時候的..):

#includeint dp[1300],a[1300],n;

int main()

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

}return 0;

}

hdu1257 最少攔截系統

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

hdu 1257 最少攔截系統

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

HDU1257 最少攔截系統

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