給出1-n的兩個排列p1和p2,求它們的最長公共子串行。
輸入格式:
第一行是乙個數n,
接下來兩行,每行為n個數,為自然數1-n的乙個排列。
輸出格式:
乙個數,即最長公共子串行的長度
輸入樣例#1: 複製
5輸出樣例#1: 複製3 2 1 4 5
1 2 3 4 5
3【資料規模】
對於50%的資料,n≤1000
對於100%的資料,n≤100000
剛開始sb,,沒想dp,hh。。
打了乙個複雜度超級高的,,,
10分,,
、
然後就是一般的暴力dp了,
50:
#include#include#include#include#includeusing namespace std;然後正解:轉為最長上公升子串行問題,(這裡的最長上公升是,,出現位置的序號上公升,,,)int n;
int a[100002],b[100002],f[1002][1002];
int main()
} printf("%d",f[n][n]);
return 0;
}
#include#include#include#include#includeusing namespace std;如果你不開心,那我就把右邊int n,x,m;
int a[100002],pos[100002],f[100002];
int main()
for(int i=1;i<=n;++i)
for(int i=1;i<=n;++i)
else f[lower_bound(f+1,f+m+1,a[i])-f]=a[i];
} printf("%d",m);
return 0;
}
這個帥傻子分享給你吧,
你看,他這麼好看,那麼深情的望著你,你還傷心嗎?
真的!這**盯上他五秒鐘就想笑了。
一切都會過去的。
P1439 模板 最長公共子串行
給出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 1...
P1439 模板 最長公共子串行
p1439 模板 最長公共子串行 這個題目我是沒想到反正我感覺十分的神奇先寫一下我在洛谷題解區看見的乙個很好理解的題解 對於樣例 3 2 1 4 5 1 2 3 4 5 我們可以把第乙個陣列編號位a b c d e 那麼第二個陣列就變成了c b a d e 現在對於第二個陣列的最長上公升子串行就是答...
P1439 模板 最長公共子串行
給出1 n的兩個排列p1和p2,求它們的最長公共子串行。輸入格式 第一行是乙個數n,接下來兩行,每行為n個數,為自然數1 n的乙個排列。輸出格式 乙個數,即最長公共子串行的長度 輸入樣例 1 複製 53 2 1 4 5 1 2 3 4 5 輸出樣例 1 複製 資料規模 對於50 的資料,n 1000...