NOI 8780 攔截飛彈(dfs or dp)

2021-10-02 10:58:17 字數 1117 閱讀 4235

思路1

剛開始想到dfs,n不太大(小於20)

每個飛彈有兩種情況,選或不選(揹包問題):

選,那麼更新h為當前飛彈高度,並用if剪枝一下

不選,就是跳過它,僅index+1即可

**:

#include

#define fo(i,a,b) for(int i=a;i//選用

using

namespace std;

int a[15]

,maxs=

0,n;

void

dfs(

int index,

int h,

int sum)

if(a[index]

<=h)

dfs(index+

1,a[index]

,sum+1)

;dfs

(index+

1,h,sum);}

intmain()

小思考:

用時5ms,但發現其他人有用時1ms的,看了其他人的方法,感覺時間還是無法優化,於是開始思考。。。

思路二:

動態規劃,模擬最長子序列 o(n

2)o(n^2)

o(n2

)複雜度:

快了一些

NOI 8780 攔截飛彈 線性dp

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

NOI 8780 攔截飛彈 入門dp

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

攔截飛彈 vip

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