題意:給你長度為a+1與b+1的兩個數列,數列的數各不相同,並且只包含1~n*n的數,求a與b的最長公共子串行。
題解:由於兩個串最多長度都為250*250所以n*n的最長公共子串行的做法不適合,但是我們可考慮,乙個數列中,所有的數字各不相同,所以我們可以通過將a陣列標記1~a+1,然後將b陣列通過a陣列轉化標記,最後只要求b陣列中最長上公升子串行的長度就可以了,時間複雜度o(nlogn)。
ac**:
#include#include#includeusing namespace std;
int a[62501],b[62501],c[62501];
int best[62501],tot;
int main()
best[r+1]=b[i];
tot=max(tot,r+2);
ans=max(ans,tot);
} printf("case %d: %d\n",cas++,ans);
}}
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 等等。這些子串中最長...
最長上公升子串行
問題描述 乙個數的序列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,4,8 等等...
最長上公升子串行
最長上公升子串行問題是各類資訊學競賽中的常見題型,也常常用來做介紹動態規劃演算法的引例,筆者接下來將會對poj上出現過的這類題目做乙個總結,並介紹解決lis問題的兩個常用 演算法 n 2 和 nlogn 問題描述 給出乙個序列a1,a2,a3,a4,a5,a6,a7.an,求它的乙個子串行 設為s1...