最长公共子序列 -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;
}
posted @ 2025-11-05 21:15  XYu1230  阅读(3)  评论(0)    收藏  举报