poj2533 最長上公升子串

2021-07-03 08:40:29 字數 498 閱讀 6045

題目大意:給你乙個字串,你要從裡邊找到最長的子串的長度,且這個子串必須是公升序。

解題思路:dp

狀態變數:d[i]以i結尾的最長上公升子串的長度

狀態轉移方程:d[i]=max(d[i],d[j]+1) j邊界:全初始化為1,因為每乙個單獨的字元都是乙個子串

**:#include

#include

#include

#include

using namespace std;

const int maxn=10000+100;

int a[maxn],d[maxn];

int main()

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

for(int j=1;ja[j])  d[i]=max(d[i],d[j]+1);

}int ans=0;

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

ans=max(ans,d[i]);

cout<}

POJ 2533 最長上公升子串行

題意很簡單,給定一串無序 數列,找其中 嚴格上公升子串行的 長度 開始接觸時 用的dp,but 耗時多,後來又學了一下方法 很簡單 怎麼理解呢?看下面 假裝數列開始就是上公升子串行,放入新數列中 題解中的a 在這之後的每乙個數,滿足上公升條件,放在後面,長度加一 不滿足條件,替換佇列中第乙個大於他的...

POJ 2533 最長上公升子串行

思路 建立乙個dp i 陣列,i表示乙個子串行中最後的乙個元素 也是最大的乙個元素 然後迴圈兩次,時間複雜度o n 2 詳見下面ac 例題 poj 2533 include include include include include include include include include...

POJ2533 動態規劃 最長上公升子串行

嘛,兩種方法,n 2和nlogn。題目概述 lis,臥槽真的不是我不想描述,而是找不到方法描述呀。總之就是最長!上公升!子串行!演算法思想 提供兩種dp方法。第一種,dp狀態記為dp i 表示以a i 結尾的序列的最大長度。這樣推得的狀態方程就是dp i max dp i dp j 1 when a...