洛谷1439 特殊的最長公共子串行

2021-08-18 18:38:08 字數 694 閱讀 4917

給出1-n的兩個排列p1和p2,求它們的最長公共子串行。

輸入格式:

第一行是乙個數n,

接下來兩行,每行為n個數,為自然數1-n的乙個排列。

輸出格式:

乙個數,即最長公共子串行的長度

輸入樣例#1:

複製

5 

3 2 1 4 5

1 2 3 4 5

輸出樣例#1:

複製

3

【資料規模】

對於50%的資料,n≤1000

對於100%的資料,n≤100000

#include

using namespace std;

int n,a[200000],b[200000],c[200000],len,belong[200000];

int main()

len=0;

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

else

}printf("%d",len);

return(0);

ps:初始化為belong[a[i]]=i,如果belong[a[i]]==belong[b[j]],則一定a[i]==b[j],所以問題便從求最長公共子串轉化為了求belong[b[j]]的最長上公升子串行,

!!盡量去考慮能有哪些狀態可以到達目前狀態,而不是考慮目前狀態可以到達哪些狀態!!

洛谷 1439 最長公共子串行

題目描述 給出1 n的兩個排列p1和p2,求它們的最長公共子串行。輸入格式 第一行是乙個數n,接下來兩行,每行為n個數,為自然數1 n的乙個排列。輸出格式 乙個數,即最長公共子串行的長度 輸入輸出樣例 輸入 1 53 2 1 4 5 1 2 3 4 5 輸出 1 3說明 提示 資料規模 對於50 的...

洛谷1439 模板 最長公共子串行

題目 最長公共子串行 思路 這題用一般的dp來做,f i j 表示a的前i位和b的前j位的最長公共子串行的長度,時間複雜度為o n 2 在這題會tle。在這題中,需要用o nlogn 的複雜度實現。先設計乙個陣列b,b i 代表b串中的數第i個數在a串中的位置。例如 a串 3 2 1 4 5 b串 ...

洛谷 最長公共子串

原題鏈結 題目描述 給定兩個字串str1和str2,輸出連個字串的最長公共子串行。如過最長公共子串行為空,則輸出 1。輸入描述 輸出包括兩行,第一行代表字串str1,第二行代表str2。1 length str1 length str2 5000 輸出描述 輸出一行,代表他們最長公共子串行。如果公共...