P1439 【模板】最长公共子序列

Aimee

这个题的数据范围\(O(n^2)\)

过不去,但是这可是排列啊

求出一个数组中每一个元素在第二个中的位置,然后跑LIS

``cpp

include

include

include

include

using namespace std;
int p[100001];
int re[100001];
int n;
int x;
int Znic;
int dp[100001];
int main(){
scanf("%d",&n);
for(int i=1;i<=n;++i){
scanf("%d",&x);
re[x]=i;
}
for(int i=1;i<=n;++i){
scanf("%d",&x);
p[i]=re[x];
}
for(int i=1;i<=n;++i){
if(p[i]>dp[Znic]) dp[++Znic]=p[i];
else dp[lower_bound(dp+1,dp+Znic+1,p[i])-dp]=p[i];
}
cout<<Znic;
return 0;
}

posted @ 2020-10-25 21:35  Simex  阅读(50)  评论(0编辑  收藏  举报