這個問題分析後第一反應是第一問用動態規劃做(求最長遞減序列),第二問用貪心演算法做。但是還是覺得有點困難,所以就去網上找找看看有沒有更好的解決方法。然後找到乙個令我耳目一新的思路,就是第二問的求解為序列的最長單調遞增序列長度。問題描述
某國為了防禦敵國的飛彈襲擊,發展出一種飛彈攔截系統。但是這種飛彈攔截系統有乙個缺陷:雖然它的第一發炮彈能夠到達任意的高度,但是以後每一發炮彈都不能高於前一發的高度。某天,雷達捕捉到敵國的飛彈來襲。由於該系統還在試用階段,所以只有一套系統,因此有可能不能攔截所有的飛彈。
輸入飛彈依次飛來的高度(雷達給出的高度資料是不大於30000的正整數),計算這套系統最多能攔截多少飛彈,如果要
攔截所有飛彈最少要配備多少套這種飛彈攔截系統。
輸入格式
一行,為飛彈依次飛來的高度
輸出格式
兩行,分別是最多能攔截的飛彈數與要攔截所有飛彈最少要配備的系統數
樣例輸入
389 207 155 300 299 170 158 65
樣例輸出62
這個思路詳情參考
注意:這裡輸入完樣例以後,還要按ctrl+z 結束輸入 再按回車執行才能出結果。
#includeusing namespace std;
#define len 20
int main()
,up[len+1]=,down[len+1]=;
while(cin>>mis[i]&&mis[i]!=eof)
up[i]=max1+1;
down[i]=max2+1;
sum=max(sum,up[i]);
num=max(num,down[i]);
i++;
}cout
}
演算法訓練 攔截飛彈
演算法訓練 攔截飛彈 時間限制 1.0s 記憶體限制 256.0mb 問題描述 某國為了防禦敵國的飛彈襲擊,發展出一種飛彈攔截系統。但是這種飛彈攔截系統有乙個缺陷 雖然它的第一發炮彈能夠到達任意的高度,但是以後每一發炮彈都不能高於前一發的高度。某天,雷達捕捉到敵國的飛彈來襲。由於該系統還在試用階段,...
演算法訓練 攔截飛彈
題目鏈結 錦囊2 求一套系統攔截的飛彈最大值為最長不下降子串行問題,用動態規劃。求最少多少套系統需要使用貪心法,每枚後面的炮彈使用能攔截它的最低的系統。問題描述 某國為了防禦敵國的飛彈襲擊,發展出一種飛彈攔截系統。但是這種飛彈攔截系統有乙個缺陷 雖然它的第一發炮彈能夠到達任意的高度,但是以後每一發炮...
演算法 攔截飛彈問題
攔截飛彈問題 20分 某國為了防禦敵國的飛彈襲擊,開發出一種飛彈攔截系統。但是這種飛彈攔截系統有乙個缺陷 雖然它的第一發炮彈能夠到達任意的高度,但是以後每一發炮彈都不能高於前一發的高度。某天,雷達捕捉到敵國的飛彈來襲,並觀測到飛彈依次飛來的高度,請計算這套系統最多能攔截多少飛彈。攔截來襲飛彈時,必須...