P1439 【模板】最长公共子序列
题目:
https://www.luogu.com.cn/problem/P1439
离散化+最长公共子序列的优化
离散化的例子:求2314 和3142的最长公共子序列
2 3 1 4
1 2 3 4
3 1 4 2
2 3 4 1
#include<stdio.h> #include<algorithm> using namespace std; const int maxn=1e5+6; int n; int a[maxn],b[maxn]; int v[maxn],w[maxn]; int dp[maxn]; int main() { scanf("%d",&n); for(int i=1;i<=n;i++) {scanf("%d",&a[i]); v[a[i]]=i; } for(int i=1;i<=n;i++) {scanf("%d",&b[i]); w[i]=v[b[i]]; } int t=0; int ans=0; for(int i=1;i<=n;i++) printf("%d ",w[i]); printf("\n"); for(int i=1;i<=n;i++) { if(w[i]>dp[ans]) dp[++ans]=w[i]; else dp[lower_bound(dp+1,dp+ans+1,w[i])-dp]=w[i]; } printf("%d\n",ans); }
浙公网安备 33010602011771号