CDOJ 251 飛彈攔截 最長遞增子串行

2022-05-13 10:12:52 字數 616 閱讀 2705

點選開啟鏈結

就是尋找lis 並列印出來

dp[i]表示到包括第i個數的前i個的最長遞增的長度

從數列從後往前找就好了 ,如果從前往後,前面的大數會覆蓋掉後面的小數,就不對了

**:

1 #include 2

using

namespace

std;34

const

int maxn = 1e5+10;5

6int

a[maxn],dp[maxn],ans[maxn];

7 vectorv;89

intmain()

2526 cout << mx <27int k =maxn;

28for(int i=n; i>=1; i--)34}

35//

int k = -1,cnt=1;

36//

for(int i=1; i<=n; i++)

42//}43

44for(int i=v.size()-1; i>=1; i--)

45 cout << v[i] << "";

46 cout << v[0] <48 }

CDOJ 251 飛彈攔截 LIS

nlogn的最長上公升子串行,但是要輸出lis的長度和乙個最小字典序的lis。然後怎麼輸出這個最小字典序的lis就成了問題,然後就翻被人的題解,發現就只有還儲存那個f陣列就行 f陣列還是儲存的到這個數的lis的長度,然後假如f i f j 則必有a i a j 所以就肯定選擇a j 是對的 然後就倒...

最長遞增子串行 飛彈攔截系統

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

動態規劃 最長遞增子串行 攔截飛彈

題目描述 某國為了防禦敵國的飛彈襲擊,開發出一種飛彈攔截系統。但是這種飛彈攔截系統有乙個缺陷 雖然它的第一發炮彈能夠到達任意的高度,但是以後每一發炮彈都不能高於前一發的高度。某天,雷達捕捉到敵國的飛彈來襲,並觀測到飛彈依次飛來的高度,請計算這套系統最多能攔截多少飛彈。攔截來襲飛彈時,必須按來襲飛彈襲...