最长公共子序列 -2025/11/3
最长公共子序列
#include <bits/stdc++.h>
using namespace std;
const int N = 1e6 + 10;
int id[N],b[N];
int n;
int g[N];
int main(){
cin >> n;
int x;
for(int i = 1; i <= n; i++) {
scanf("%d",&x);
id[x] = i;
}
for(int i= 1; i <= n; i++){
scanf("%d",&x);
b[i] = id[x];
}
int k = 0;
for(int i = 1; i <= n; i++){
if(b[i] == 0) continue;
if(g[k] < b[i]) {
g[++k] = b[i];
}
else *lower_bound(g + 1, g + k + 1, b[i]) = b[i];
}
cout << k << "\n";
return 0;
}

浙公网安备 33010602011771号