noip1999 攔截飛彈 noip1999
攔截飛彈
題目描述 description
某國為了防禦敵國的飛彈襲擊,發展出一種飛彈攔截系統。但是這種飛彈攔截系統有乙個缺陷:雖然它的第一發炮彈能夠到達任意的高度,但是以後每一發炮彈都不 能高於前一發的高度。某天,雷達捕捉到敵國的飛彈來襲。由於該系統還在試用階段,所以只有一套系統,因此有可能不能攔截所有的飛彈。
輸入描述 input description
輸入飛彈依次飛來的高度(雷達給出的高度資料是不大於30000的正整數)
輸出描述 output description
輸出這套系統最多能攔截多少飛彈,如果要攔截所有飛彈最少要配備多少套這種飛彈攔截系統。
樣例輸入 sample input
389 207 155 300 299 170 158 65
樣例輸出 sample output62
資料範圍及提示 data size & hint
飛彈的高度<=30000,飛彈個數<=20
思路這道題的突破口在於問題的轉化
= =先是第一問: 「最多能攔截的飛彈數」。根據題目中飛彈的毛病,可以把問題轉化成經典的最長
不上公升子串行,動態規劃
o(cnt2)
完美解決;
再看第二問: 「最少需要的系統數」。順延上一問的思路,「不可能由之前已經確定的系統攔截下來的飛彈」應當新增到當前位置前的最長
上公升子串行中。同樣是經典問題,動態規劃o(cnt2)
。最後稍微得瑟一下→_→在沒有優化的情況下,這段**在發帖前包攬了wikioi上「最快」「最短」以及「記憶體最少」三項指標~(好吧是因為這題太水了)
1 #include
2using
namespace std;
3int h[22], suc[22]=, cnt[22]=, ms=0, mc=0;
4int main()
5 19
if(suc[i]>ms)ms=suc[i];
20if(cnt[i]>mc)mc=cnt[i];
21 }
22 printf("
%d\n%d
", ms, mc);
23return
0;24 }
NOIP1999 攔截飛彈
時間限制 1 sec 記憶體限制 64 mb 某國為了防禦敵國的飛彈襲擊,發展出一種飛彈攔截系統。但是這種飛彈攔截系統有乙個缺陷 雖然它的第一發炮彈能夠到達任意的高度,但是以後每一發炮彈都不能高於前一發的高度。某天,雷達捕捉到敵國的飛彈來襲。由於該系統還在試用階段,所以只有一套系統,因此有可能不能攔...
NOIP1999 攔截飛彈
1044 攔截飛彈 1999年noip全國聯賽提高組 時間限制 1 s 空間限制 128000 kb 題目等級 gold 題解 檢視執行結果 題目描述 description 某國為了防禦敵國的飛彈襲擊,發展出一種飛彈攔截系統。但是這種飛彈攔截系統有乙個缺陷 雖然它的第一發炮彈能夠到達任意的高度,但...
攔截飛彈noip1999
某國為了防禦敵國的飛彈襲擊,發展出一種飛彈攔截系統。但是這種飛彈攔截系統有乙個缺陷 雖然它的第一發炮彈能夠到達任意的高度,但是以後每一發炮彈都不能高於前一發的高度。某天,雷達捕捉到敵國的飛彈來襲。由於該系統還在試用階段,所以只有一套系統,因此有可能不能攔截所有的飛彈。輸入飛彈依次飛來的高度 雷達給出...