刷題總結 攔截飛彈(ssoj)

2022-05-23 14:54:10 字數 1148 閱讀 7779

noip1999 提高組試題

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

輸入飛彈依次飛來的高度(雷達給出的高度資料是不大於10000的正整數),計算這套系統最多能攔截多少飛彈? 如果要攔截所有飛彈最少要配備多少套這種飛彈攔截系統?

只有一行,為空格隔開的n(1<=n<=1000)個正整數序列。

第一行是乙個正整數,為最多能攔截的飛彈數量。

第二行是乙個正整數,為攔截所有飛彈需要配備攔截系統的套數。

輸入  [複製]

389 207 155 300 299 170 158 65
輸出

2

第乙個問很簡單就是將陣列反過來後求最長不下降序列的長度;

第二個問用乙個定理:乙個數列中最少的不上公升序列的個數等於該數列的最長上公升(注意不是最長不下降序列)的長度!!

#include#include

#include

#include

#include

#include

#include

#include

#include

using

namespace

std;

const

int n=2000

;int num[n],n=0,ans=0,maxx=0

,dp[n];

intmain()

if(left>maxx) maxx++;

dp[left]=num[i];

} reverse(num+1,num+n+1

); memset(dp,

0,sizeof

(dp));

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

if(left>ans) ans++;

dp[left]=num[i];

} cout

cout

return0;

}

攔截飛彈 vip

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

1044 攔截飛彈

1999年noip全國聯賽提高組 時間限制 1 s 空間限制 128000 kb 題目等級 gold 題解 題目描述 description 某國為了防禦敵國的飛彈襲擊,發展出一種飛彈攔截系統。但是這種飛彈攔截系統有乙個缺陷 雖然它的第一發炮彈能夠到達任意的高度,但是以後每一發炮彈都不能高於前一發的...

攔截飛彈 題解

description ggf最近經常遭到不明飛彈的襲擊,因此他只好開發了一套飛彈攔截系統。該系統非常先進,使用會拐彎的雷射對飛彈進行射擊。所有被雷射擊中的飛彈就瞬間完蛋,而且一束雷射可以同時摧毀多枚飛彈。但雷射只能向上發射,所以若同一束雷射能依次擊中多枚飛彈,則這些飛彈座標的每一維都嚴格單調上公升...