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