給出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
嚶嚶嚶我看不懂題解啊
在rax大佬的幫助下看懂啦,
#include#include#include#includeusing namespace std;
const int n = 1e5 + 3;
int n;
int a[n],b[n],f[n],v[n];
int main()
for(int i = 1;i <= n;i++)
int len = 0;
for(int i = 1;i <= n;i++)
else
f[l] = min(v[b[i]],f[l]);//最後一位越小越好
} }printf("%d",len);
return 0;
}
洛谷 P1439 模板 最長公共子串行
lis lcs 對映 題目描述 給出1 n的兩個排列p1和p2,求它們的最長公共子串行。輸入輸出格式 輸入格式 第一行是乙個數n,接下來兩行,每行為n個數,為自然數1 n的乙個排列。輸出格式 乙個數,即最長公共子串行的長度 輸入輸出樣例 輸入樣例 1 5 3 2 1 4 5 1 2 3 4 5 輸出...
P1439 模板 最長公共子串行(洛谷)
傳送門 這道題lcs。o n 2 暴力不僅會tle還會re。暴力的話就是dp的那個式子。這裡給出對數時間處理的 我們記錄陣列a的每個元素所在的下標,即把下標和對應的元素內容進行調換,得到pos。然後我們把pos陣列和b陣列進行操作,查詢b i 在pos中對應的位置 即在a中對應的位置 求出pos陣列...
洛谷 P1439 最長公共子串行
傳送門 給出1 n的兩個排列p1和p2,求它們的最長公共子串行。輸入格式 第一行是乙個數n,接下來兩行,每行為n個數,為自然數1 n的乙個排列。輸出格式 乙個數,即最長公共子串行的長度 輸入樣例 5 3 2 1 4 5 1 2 3 4 5 輸出樣例 3 資料規模 對於50 的資料,n 1000 對於...