題目:
解題思路:
第一問:沒什麼好說的,基礎的線性dp求解經典的最少不上公升(下降)子串行;使用的小技巧:第二問用了乙個 bl陣列用於標記該炮彈是否已經被打掉,被打掉標記為1,求解時則不需要再考慮。第二問:貪心思想。
需要n個飛彈就想當於把一串數字劃分為n個部分,且每個部分都是一段遞減的子串行 例如 :6 5 1 7 3 2 需要最少的炮彈–> 6 5
1//7 3 2 顯然劃分了兩個部分。 如果想讓需要的炮彈數最少,就是等價於劃分的每個部分的長度最長。
ac**:
#include
#define n 30010
using
namespace std;
typedef
long
long ll;
ll a[n]
;ll dp[n]
;ll bl[n]
;int
main()
//下面是基礎的dp問題:最長下降子串行
for(ll i=
0;i}sort
(dp,dp+n)
; cout<
<
//下面求彈最少要配備的系統數
ll ans=0;
ll l=a[0]
;for
(ll i=
0;ians++;}
} cout<
}
攔截飛彈(最長上公升子串行,最長不上公升子串行)
攔截飛彈 noip 1999 題目描述 張琪曼 老師,修羅場是什麼?墨老師 修羅是佛家用語,修羅畢生以戰鬥為目標,修羅場指的是他們之間的死鬥坑,人們通常用 修羅場 來形容慘烈的戰場。後來又引申出 乙個人在困境中做絕死奮鬥 的意思。所以,這其實也在暗示我們,即使是身處絕境,也不要放棄奮鬥。再說了,情況...
飛彈攔截(dp 最長不上公升子串行)
從頭填坑。除了數字三角形之外做的第二道dp。題目描述 某國為了防禦敵國的飛彈襲擊,發展出一種飛彈攔截系統。但是這種飛彈攔截系統有乙個缺陷 雖然它的第一發炮彈能夠到達任意的高度,但是以後每一發炮彈都不能高於前一發的高度。某天,雷達捕捉到敵國的飛彈來襲,由於該系統還在試用階段,所以只有一套系統,因此有可...
線性dp 攔截飛彈 最長上公升子串行模型 貪心
強相關 線性dp 最長上公升子串行 模板題 最長上公升子串行模型 貪心解法 本題高階版 線性dp 飛彈防禦系統 最長上公升子串行模型 貪心 dfs 1010.攔截飛彈 重點 線性dp lis問題 貪心 思路 基於這個思想,第一問就寫個lis就行了。第二問實現方式為 線性dp 最長上公升子串行 模板題...