程式設計開發飛彈攔截問題解析。某國為了防禦敵國的飛彈襲擊,發展出一種飛彈攔截系統。但是這種飛彈攔截系統有乙個缺陷:雖然它的第一發炮彈能夠到達任意的高度,但是以後每一發炮彈都不能高於前一發的高度。某天,雷達捕捉到敵國的飛彈來襲。由於該系統還在試用階段,所以只有一套系統,因此有可能不能攔截所有的飛彈。
輸入飛彈依次飛來的高度(雷達給出的高度資料是不大於30000的正整數),計算這套系統最多能攔截多少飛彈,如果要攔截所有飛彈最少要配備多少套這種飛彈攔截系統。 輸入格式 一行,為飛彈依次飛來的高度 輸出格式 兩行,分別是最多能攔截的飛彈數與要攔截所有飛彈最少要配備的系統數 樣例輸入 389 207 155 300 299 170 158 65 樣例輸出 6
2#include
using namespace std;
int a[30005];
int dp[30005];
int len,cnt;
int main()
if(len < dp[i])
len = dp[i];
} memset(dp,0,sizeof(dp));
for(int i = 1;i <= n;i ++)
if(cnt < dp[i])
cnt = dp[i];
} cout << len << endl << cnt;
return 0;
}
飛彈攔截題解
對於問一求最長不上公升子串行,問二求最長上公升子串行 為什麼問二是這樣是我也不知道 巨坑的點,對於問一,f陣列中的資料是下降 從大到小排序 的,必須新增greater 二分的原則是排好序啊!終於ac include include include include include include us...
攔截飛彈 題解
description ggf最近經常遭到不明飛彈的襲擊,因此他只好開發了一套飛彈攔截系統。該系統非常先進,使用會拐彎的雷射對飛彈進行射擊。所有被雷射擊中的飛彈就瞬間完蛋,而且一束雷射可以同時摧毀多枚飛彈。但雷射只能向上發射,所以若同一束雷射能依次擊中多枚飛彈,則這些飛彈座標的每一維都嚴格單調上公升...
飛彈攔截問題變種
問題 求原序列最少能夠分成多少個單調下降子串行。對於這個問題其實並非是動態規劃的問題,而是乙個貪心的問題。貪心策略 令ans 0,a為空,逐個考慮序列中的元素x,在a中尋找大於x的最小元素,若找到,將其替換為x,迴圈 否則,將x新增到a中,ans 1,迴圈。下面簡單證明這樣做的正確性 至於一些顯然的...