题解 P1439 【【模板】最长公共子序列】
离散化。。。
惊奇地发现它变成了求LIS
LIS不是n^2吗?
神奇的操作
上代码
#include<bits/stdc++.h>
using namespace std;
int n,s1[100010],s2[100010],s[100010],f[100010],now;
int main()
{
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>s1[i];
s[s1[i]]=i;
}
for(int i=1;i<=n;i++)
{
cin>>s2[i];
}
for(int i=1;i<=n;i++)
{
if(s[s2[i]]>f[now])
{
f[++now]=s[s2[i]];
}
else
{
int k=lower_bound(f+1,f+now+1,s[s2[i]])-f;
f[k]=s[s2[i]];
}
}
cout<<now;
}