某國為了防禦敵國的飛彈襲擊,發展出一種飛彈攔截系統.但是這種飛彈攔截系統有乙個缺陷:雖然它的第一發炮彈能夠到達任意的高度,但是以後每一發炮彈都不能超過前一發的高度.某天,雷達捕捉到敵國的飛彈來襲.由於該系統還在試用階段,所以只有一套系統,因此有可能不能攔截所有的飛彈.
怎麼辦呢?多搞幾套系統唄!你說說倒蠻容易,成本呢?成本是個大問題啊.所以俺就到這裡來求救了,請幫助計算一下最少需要多少套攔截系統.
input
輸入若干組資料.每組資料報括:飛彈總個數(正整數),飛彈依此飛來的高度(雷達給出的高度資料是不大於30000的正整數,用空格分隔)
output
對應每組資料輸出攔截所有飛彈最少要配備多少套這種飛彈攔截系統.
sample input
8 389 207 155 300 299 170 158 65
sample output
2
思路:這個題我把網上大神們的方法都膜了一下,感覺還是貪心的好理解,因為要求最少的攔截系統,
所以我們每次都找他前面的比他大的當中最小的來攔截並更改此飛彈的高度,如果沒有找到的話就需要增加
乙個攔截系統然後加入陣列裡模擬;
#include#define n 100010#define inf 0x3f3f3f3f
using namespace std;
int x;
int num[n];
int main()
for(i=1;i<=n;i++)
for(j=1;ja[j])
dp[i]=max(dp[i],dp[j]+1);
int ans=-1;
for(i=1;i<=n;i++)
ans=max(ans,dp[i]);
cout<
hdu 1257 最少攔截系統 dp
簡單的dp,只要把每個系統的飛彈當前最低高度儲存一下,以後得飛彈都用最小值比他大的系統中最小值最小的就 ok 啦。每次要麼更新原來系統最低高度,要麼加進去乙個新系統。include include include include include include include include inc...
hdu1257最少攔截系統(dp)
怎麼辦呢?多搞幾套系統唄 你說說倒蠻容易,成本呢?成本是個大問題啊.所以俺就到這裡來求救了,請幫助計算一下最少需要多少套攔截系統.2 解題報告 好多人可能會想用兩個迴圈,只要外迴圈大於內迴圈,即後面的大於前面的就 1,這種方法是不對的。應該用dp的思想。判斷什麼該 1的時候注意是用len i 還是l...
HDU 1257 最少攔截系統(DP)
這題其實就是求最長上公升子串行,可是今天丟人丟大了,前幾天剛做個這道題,今天比賽直接把 貼上了,晚上學長讓我講講怎麼用dp做的。一看就傻眼了,我自己心裡還想這題怎麼能這麼做呢!討論完題目回頭一想還確實是這麼回事。唉,悲劇啊 可以看看這組數 389 207 155 300 299 170 158 65...