P1020 飛彈攔截(洛谷)

2021-10-10 11:41:36 字數 801 閱讀 8288

傳送門

這道題是dp題,lis題目。

這道題跟hdu的1257一樣的,不過這個題目輸出的東西多一些。

要求最少的飛彈攔截系統和最長的飛彈攔截系統可以攔多少個飛彈。

這個題目使用o(n^2)會wa。只能過一半

主要還是lower_bound和upper_bound的使用。

對於最少的飛彈攔截系統,我們求lis即可。

對於最長的飛彈攔截系統可以攔多少個飛彈,我們可以從後往前求最長的非遞減的子串行。

因為這樣反過來就是我們的最長的啦

注意是upper_bound哦~

**部分:

#include

#define mst(a, n) memset(a, n, sizeof(a))

using

namespace std;

const

int n =

1e5+10;

int dp[n]

;int a[n]

;int cnt[n]

;int n;

intmain()

else

}mst

(dp,0)

; dp[0]

= a[0]

;for

(int i =

1; i < n; i++

)else

} cout << ans1 +

1<< endl;

cout << ans2 +

1<< endl;

return0;

}

洛谷P1020 飛彈攔截

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

洛谷 P1020 飛彈攔截

題目大意 對於乙個飛彈攔截系統 它的第一發炮彈能夠攔截任意高度的飛彈,但之後攔截的每一發炮彈都不能高於前一發的高度。輸入n發飛彈依次飛來的高度a i 計算這套系統最多能攔截多少飛彈,如果要攔截所有飛彈最少要配備多少套這種飛彈攔截系統。1 n 100 0 a i 30000 題解 p i 表示攔截了第...

洛谷 P1020 飛彈攔截

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