这个题的数据范围(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;
}