hdu4512 最長上公升公共子串行變形

2021-06-27 07:45:46 字數 749 閱讀 6934

題意就是找出最長的乙個序列滿足如下條件:1、整個序列對稱;2、前半段序列非遞減 

想想其實可以將序列倒序儲存到另乙個陣列,然後比較兩個陣列的最長上公升子串行。注意一點 j<(n-i+!) 這點很重要,因為有可能出現兩個序列的最長公共子串行在原序列中有重疊部分。具體方法見**

#include

#include

#include

#include

#include

#include

#include

#include

using

namespace std;

typedef

long

long lld;

#define oo 0x3f3f3f3f

#define maxn 205

int dp[maxn];

int a[maxn], b[maxn];

intmain

()int k;

ans =0;

memset

(dp,0,

sizeof dp);

for(

int i =

1; i <= n; i++)

}printf

("%d\n"

, ans);

}return0;

}/*15

1 4 2 5 -12

4-12 1 2 4

*/

Dp 最長上公升子串 最長上公升子串行

乙個數的子串bi,當b1 b2 bs的時候,我們稱這個子串是上公升的。對於給定的乙個序列 a1,a2,an 我們可以得到一些上公升的子串 ai1,ai2,aik 這裡1 i1 i2 ik n。如 對於序列 1,7,3,5,9,4,8 有它的一些上公升子串,如 1,7 3,5,9 等等。這些子串中最長...

最長公共子串行 最長上公升子串行 最長公共上公升子串行

核心 for int i 1 ifor int j 1 jif a i b j else hdu5248 樹狀陣列優化 nl ogn nlo gn include using namespace std const int maxn 100005 char a maxn int len int bi...

最長上公升子串行 最長公共上公升子串行

求最長公共子串行有幾種方法 include include using namespace std include include const int inf 0x3f3f3f3f const int maxn 10005 int a maxn ints maxn int dp maxn int d...