最長公共上公升子串行 LCIS

2022-04-11 17:22:41 字數 977 閱讀 1521

關於子串行什麼什麼的問題,以前一直沒怎麼在意過,直到省賽突然考了乙個赤裸裸的lcis,這下才著急了,因為忘記怎麼做了,而且模版也沒有帶。從第三名一直掉到第11名,而且超上來的,全都是會做這題的o(╯□╰)o。  雖然最後還是保住了乙個一等獎,不過真是太不甘心了。

這裡總結乙個o(nm)的演算法。

設題目給出a,b兩個序列。f[j]表示b序列到j的時候,與a[??]序列構成最長公共上公升子串行的最優解。其中a[??]序列,從1到n列舉過來。

如果某乙個時刻a[i]==b[j],那麼顯然,我們就應該在0到j-1中,找乙個f值最大的來更新最優解。這和求上公升子串行是思想是一樣的。另外,在列舉b[j]的時候,我們順便儲存一下小於a[i]的f值最大的b[j],這樣在更新的時候,我們就可以做到o(1)的複雜度,從而將整個演算法的複雜度保證在o(nm)

view code

#include#include

using

namespace

std;

int max(int a,int

b)int a[1010],b[1010

];int f[1010

],n,m;

intlcis()

if(a[i]>b[j]) //

0到j-1中,對於小於a[i]的,儲存f值的最優解}}

int ans=0

;

for(i=0;i)

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

return

ans;

}int

main()

scanf("%d

",&m);

for(j=0;j)

printf(

"%d\n

",lcis());

if(t)

printf("\n

");}

return0;

}

具體練習可以做做hdu 1423和湖南省第八屆程式設計大賽的j題

LCIS 最長公共上公升子串行

1004 tyvj1071 lcis最長公共上公升子串行 description 熊大媽的奶牛在小沐沐的薰陶下開始研究資訊題目。小沐沐先讓奶牛研究了最長上公升子串行,再讓他們研究了最長公共子串行,現在又讓他們要研究最長公共上公升子串行了。小沐沐說,對於兩個串a,b,如果它們都包含一段位置不一定連續的...

LCIS (最長公共上公升子串行)

ac通道 題目含義就是求最長公共上公升子串行 首先考慮,最長公共上公升子串行 最長上公升子串行 最長公共子串行,可以通過lis和lcs的思想去考慮本題目。定義狀態 dp i j 表示a陣列的前i個和b陣列的前j個且以b j 結尾的lcis長度考慮狀態轉移 轉移有兩種情況 a i b j 時候的轉移,...

最長公共上公升子串行(LCIS)

題解熊大媽的奶牛在小沐沐的薰陶下開始研究資訊題目。小沐沐先讓奶牛研究了最長上公升子串行,再讓他們研究了最長公共子串行,現在又讓他們研究最長公共上公升子串行了。小沐沐說,對於兩個數列a和b,如果它們都包含一段位置不一定連續的數,且數值是嚴格遞增的,那麼稱這一段數是兩個數列的公共上公升子串行,而所有的公...