題目描述 description
某國為了防禦敵國的飛彈襲擊,發展出一種飛彈攔截系統。但是這種飛彈攔截系統有乙個缺陷:雖然它的第一發炮彈能夠到達任意的高度,但是以後每一發炮彈都不能高於前一發的高度。某天,雷達捕捉到敵國的飛彈來襲。由於該系統還在試用階段,所以只有一套系統,因此有可能不能攔截所有的飛彈。
輸入描述 input description
輸入飛彈依次飛來的高度(雷達給出的高度資料是不大於30000的正整數)
輸出描述 output description
輸出這套系統最多能攔截多少飛彈,如果要攔截所有飛彈最少要配備多少套這種飛彈攔截系統。
樣例輸入 sample input
389 207 155 300 299 170 158 65
樣例輸出 sample output62
資料範圍及提示 data size & hint
飛彈的高度<=30000,飛彈個數<=20
var a,b:array[1..3000]of longint;
n,i,j,x,k,p:longint;
begin
while not eoln do
begin
inc(n);
read(x);
if n=1 then b[1]:=x;
a[n]:=x;
end;
k:=1;
for i:=2 to n do
begin
p:=0;
for j:=1 to k do
if b[j]>=a[i] then if p=0 then p:=j
else if b[j]if p=0 then begin inc(k);b[k]:=a[i];end
else b[p]:=a[i];
end;
writeln(k);
end.
codevs1044攔截飛彈
這個題第一問是求最長下降子串行,第二問可以轉化成求最長上公升子串行,為什麼?因為我們每遇到有hi hj的情況 i j 都要再使用一枚飛彈,因為飛彈只處理hi hj的情況嘛,很好理解的吧 所以 如下 完全可以更短 include include include include using namesp...
codevs 1044 攔截飛彈
傳送門 解題思路 首先求解最多攔截多少飛彈,每個飛彈有兩種情況,攔截或者不攔截,01揹包問題,但是空間複雜度比較高。我們可以考慮這樣乙個問題,攔截的最後乙個飛彈一定時最小的,因此我們從後往前找,只要這個飛彈之後沒有更小的,那麼這就是最後乙個飛彈,如果有更小的,那這個就是更小的那個飛彈的前乙個。所以我...
code VS 1044 攔截飛彈
rt 某國為了防禦敵國的飛彈襲擊,發展出一種飛彈攔截系統。但是這種飛彈攔截系統有乙個缺陷 雖然它的第一發炮彈能夠到達任意的高度,但是以後每一發炮彈都不能高於前一發的高度。某天,雷達捕捉到敵國的飛彈來襲。由於該系統還在試用階段,所以只有一套系統,因此有可能不能攔截所有的飛彈。輸入飛彈依次飛來的高度 雷...