題目大意:輸入若干飛彈的高度,用炮彈攔截,第一發炮彈能達到任意高度,第i發炮彈不能高於第i-1發炮彈。求乙個炮彈系統能攔截的最多的飛彈和若要攔截所有的飛彈最少需要有多少炮彈系統
第一問即求最長不上公升子串行的長度
第二問即求最長不上公升子串行的個數
而求最長不上公升子串行的個數即求最長上公升子串行的長度
簡單證明:因為在序列中的每一次資料的上公升意味著最長不上公升子串行有乙個新的起點
#include
#include
#include
using
namespace
std;
const
int maxn = 1e5 + 10;
const
int inf = 2147483640;
int dp[maxn];
int a[maxn];
int bin_find1(int l, int r, int key)
return r + 1;
}int bin_find2(int l, int r, int key)
return r + 1;
}int main()
}printf("%d\n", len);
//第二問
len = 0;
dp[0] = -inf;
for(i = 1; i <= n; ++i)
}printf("%d\n", len);
return
0;}
洛谷P1020 飛彈攔截
某國為了防禦敵國的飛彈襲擊,發展出一種飛彈攔截系統。但是這種飛彈攔截系統有乙個缺陷 雖然它的第一發炮彈能夠到達任意的高度,但是以後每一發炮彈都不能高於前一發的高度。某天,雷達捕捉到敵國的飛彈來襲。由於該系統還在試用階段,所以只有一套系統,因此有可能不能攔截所有的飛彈。輸入飛彈依次飛來的高度 雷達給出...
洛谷 P1020 飛彈攔截
題目大意 對於乙個飛彈攔截系統 它的第一發炮彈能夠攔截任意高度的飛彈,但之後攔截的每一發炮彈都不能高於前一發的高度。輸入n發飛彈依次飛來的高度a i 計算這套系統最多能攔截多少飛彈,如果要攔截所有飛彈最少要配備多少套這種飛彈攔截系統。1 n 100 0 a i 30000 題解 p i 表示攔截了第...
p1020 洛谷(簡單 dp)
某國為了防禦敵國的飛彈襲擊,發展出一種飛彈攔截系統。但是這種飛彈攔截系統有乙個缺陷 雖然它的第一發炮彈能夠到達任意的高度,但是以後每一發炮彈都不能高於前一發的高度。某天,雷達捕捉到敵國的飛彈來襲。由於該系統還在試用階段,所以只有一套系統,因此有可能不能攔截所有的飛彈。輸入飛彈依次飛來的高度 雷達給出...