Aimee

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

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

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

``cpp

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;
}

相关文章:

  • 2022-03-04
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-10-15
  • 2022-01-05
  • 2022-12-23
  • 2021-09-03
猜你喜欢
  • 2022-02-18
  • 2021-08-28
  • 2021-11-07
  • 2021-04-22
  • 2021-06-25
  • 2021-11-29
相关资源
相似解决方案