HDJ 1257 最少攔截系統

2021-08-07 09:28:57 字數 1141 閱讀 1587

problem description

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

怎麼辦呢?多搞幾套系統唄!你說說倒蠻容易,成本呢?成本是個大問題啊.所以俺就到這裡來求救了,請幫助計算一下最少需要多少套攔截系統.

input

輸入若干組資料.每組資料報括:飛彈總個數(正整數),飛彈依此飛來的高度(雷達給出的高度資料是不大於30000的正整數,用空格分隔)

output

對應每組資料輸出攔截所有飛彈最少要配備多少套這種飛彈攔截系統.

sample input

8 389 207 155 300 299 170 158 65

最開始傻乎乎的因為只要後面的飛彈比前面的乙個更高,我就要另外取乙個攔截系統,目光短點看來好像是對的,其實已經忽略了之前剩餘的攔截系統或許可以用的上。

附上開始的傻乎乎**:

#includeint main()

printf("%d",num);

}return 0;

}

看起來的確簡潔,但是犯了大錯。

後序改進**如下:

#include#includevoid sort(int end,int a)//排序演算法 從大到小排序

if(max!=i)

}}int main()

//跳出迴圈不外乎三種情況

//1 最大的剩餘空間都不滿足 ,所以要另起乙個攔截系統,此時j=0

//2 找到乙個系統可攔截高度小於當前飛彈 讓它上乙個攔截系統進行攔截

//3 直接正常跳出迴圈 並未break 表明任何乙個都可以攔截該飛彈 所以就用最後乙個攔截系統 與第二情況同處理

if(j==0)

else

a[j-1]=temp;

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

}return 0;

}

最少攔截系統(1257)

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

hdu1257 最少攔截系統

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

hdu 1257 最少攔截系統

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