洛谷 1439 最長公共子串行

2021-09-24 02:26:01 字數 943 閱讀 5592

題目描述

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

輸入格式

第一行是乙個數n,

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

輸出格式

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

輸入輸出樣例

輸入 #1

53 2 1 4 5

1 2 3 4 5

輸出 #1

3

說明/提示

【資料規模】

對於50%的資料,n≤1000

對於100%的資料,n≤100000

解釋:我們把對全排列數字進行重新編號,把b的序列編號成1,2

,3,.

..,n

1,2,3,...,n

1,2,3,

...,

n,a也對應的改變,那麼最終結果就是a的最長上公升子串行長度

#include#define inf 1000000009

#define n 100005

using namespace std;

int a[n]=;

int b[n]=;

int dp[n]=;

int n=0;

int search(int l,int r,int val)

for(int i=1;i<=n;i++) a[i]=b[a[i]];

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

int ret=0;

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

cout

}```

洛谷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串 ...

洛谷 P1439 最長公共子串行

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

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

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