飛彈攔截問題變種

2021-08-28 16:06:37 字數 484 閱讀 3350

問題:

求原序列最少能夠分成多少個單調下降子串行。

對於這個問題其實並非是動態規劃的問題,而是乙個貪心的問題。貪心策略:令ans=0,a為空,逐個考慮序列中的元素x,在a中尋找大於x的最小元素,若找到,將其替換為x,迴圈;否則,將x新增到a中,ans+=1,迴圈。

下面簡單證明這樣做的正確性:

至於一些顯然的事實,為什麼不把x貼在更大的數後面,顯然可以發現你這樣做不會得到更優的結果,因為可以逐個嘗試,每一種嘗試對應乙個新的a集合,其中只有乙個元素不同,就是你選擇貼在他後面的那個,那當然是這個不同的元素越大越好了吧,所以要滿足這個條件只能貼最小的那個了(當然得大於x)。至於上圖中萬一a[j]>a[i],那圖中爭議的選法顯然是錯誤的,因為把本可以連在一起的下降序列給分開了。

貪心是玄學,不要苛求證明的完美,有個大概正確的就已經很好了。

攔截飛彈問題

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

攔截飛彈問題

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

問題 F 攔截飛彈

時間限制 1 sec 記憶體限制 128 mb 提交 6 解決 3 提交 狀態 討論版 演算法訓練 攔截飛彈 時間限制 1.0s 記憶體限制 256.0mb 問題描述 某國為了防禦敵國的飛彈襲擊,發展出一種飛彈 攔截系統。但是這種飛彈攔截系統有乙個缺陷 雖然它的第一發炮彈能夠到達任意的高度,但是以後...