點選開啟鏈結
就是尋找lis 並列印出來
dp[i]表示到包括第i個數的前i個的最長遞增的長度
從數列從後往前找就好了 ,如果從前往後,前面的大數會覆蓋掉後面的小數,就不對了
**:
1 #include 2using
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 某國為了防禦敵國的飛彈襲擊,發展出一種飛彈攔截系統.但是這種飛彈攔截系統有乙個缺陷 雖然它的第一發炮彈能夠到達任意的高度,但是以後每一發炮彈都不能超過前一發的高度.某天,雷達捕捉到敵國的飛彈來襲.由於該系統還在試用階段,所以只有一套系統,因此有可能不能攔截所有的飛彈.怎麼辦呢...
動態規劃 最長遞增子串行 攔截飛彈
題目描述 某國為了防禦敵國的飛彈襲擊,開發出一種飛彈攔截系統。但是這種飛彈攔截系統有乙個缺陷 雖然它的第一發炮彈能夠到達任意的高度,但是以後每一發炮彈都不能高於前一發的高度。某天,雷達捕捉到敵國的飛彈來襲,並觀測到飛彈依次飛來的高度,請計算這套系統最多能攔截多少飛彈。攔截來襲飛彈時,必須按來襲飛彈襲...