動態規劃練習題(9)飛彈攔截(Noip 1999)

2021-08-21 11:03:51 字數 958 閱讀 4317

某國為了防禦敵國的飛彈襲擊,發展出一種飛彈攔截系統。但是這種飛彈攔截系統有乙個缺陷:雖然它的第一發炮彈能夠到達任意的高度,但是以後每一發炮彈都不能高於前一發的高度。某天,雷達捕捉到敵國的飛彈來襲。由於該系統還在試用階段,所以只有一套系統,因此有可能不能攔截所有的飛彈。

輸入飛彈依次飛來的高度(雷達給出的高度資料是 \le 50000≤5

0000

的正整數),計算這套系統最多能攔截多少飛彈,如果要攔截所有飛彈最少要配備多少套這種飛彈攔截系統。

輸入格式:11

行,若干個整數(個數 \le 100000≤1

0000

0 )輸出格式:22

行,每行乙個整數,第乙個數字表示這套系統最多能攔截多少飛彈,第二個數字表示如果要攔截所有飛彈最少要配備多少套這種飛彈攔截系統。

輸入樣例#1:

複製

389 207 155 300 299 170 158 65

輸出樣例#1:

複製

6

2

主要說說第二問,根據dilworth定理:

把乙個數列劃分成最少的不公升子串行的數目就等於這個數列的最長上公升子串行的長度。所以……………………

#include #include #include #include using namespace std;

long long a[10000][2],t,n=1,mmax,ans;

int main()

for(int i=1;i<=n;++i)

for(int i=1;i<=n;++i)

mmax=max(mmax,a[i][1]);

for(int i=1;i<=n;++i)

a[i][1]=1;

for(int i=1;i<=n;++i)

for(int i=1;i<=n;++i)

ans=max(ans,a[i][1]);

cout<

動態規劃練習1 飛彈攔截

問題描述 某國為了防禦敵國的飛彈襲擊,發展出一種飛彈攔截系統。但是這種飛彈攔截系統有乙個缺陷 雖然 它的第一發炮彈能夠到達任意的高度,但是以後每一發炮彈都不能高於前一發的高度。某天,雷達捕捉到 敵國的飛彈來襲。由於該系統還在試用階段,所以只有一套系統,因此有可能不能攔截所有的飛彈。輸入飛彈依次飛來的...

動態規劃 飛彈攔截

某國為了防禦敵國的飛彈襲擊,發展出一種飛彈攔截系統。但是這種飛彈攔截系統有乙個缺陷 雖然它的第一發炮彈能夠到達任意的高度,但是以後每一發炮彈都不能高於前一發的高度。某天,雷 達捕捉到敵國的飛彈來襲。由於該系統還在試用階段,所以只有一套系統,因此有可能不能攔截所有 的飛彈。輸入資料 第一行為乙個整數 ...

飛彈攔截 動態規劃

描述 某國為了防禦敵國的飛彈襲擊,開發出一種飛彈攔截系統。但是這種飛彈攔截系統有乙個缺陷 雖然它的第一發炮彈能夠到達任意的高度,但是以後每一發炮彈都不能高於前一發的高度。某天,雷達捕捉到敵國的飛彈來襲,並觀測到飛彈依次飛來的高度,請計算這套系統最多能攔截多少飛彈。攔截來襲飛彈時,必須按來襲飛彈襲擊的...