社区讨论

90求解,第二个点WA了

P1439两个排列的最长公共子序列参与者 3已保存回复 2

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
2 条
当前快照
1 份
快照标识符
@mi7cithk
此快照首次捕获于
2025/11/20 19:26
4 个月前
此快照最后确认于
2025/11/20 19:26
4 个月前
查看原帖
CPP
#include <bits/stdc++.h>
#define inf 1000000007
using namespace std;
int read( ){
	int x=0,y=1;
	char c=getchar( );
	while(c>'9'||c<'0'){if(c=='-')y=-1;c=getchar( );}
	while(c>='0'&&c<='9') {x=x*10+c-'0';c=getchar( );}
	return x*y;
}
int n,x,num=0;
int a[100001],g[100001],d[100001],s[100001];
int main( ){
	n=read( );
	for(register int i=1;i<=n;i++) {scanf("%d",&x);a[x]=i;}
	for(register int i=0;i<n;i++) {scanf("%d",&x);s[num++]=a[x];}
	for(register int i=1;i<=num;i++) g[i]=inf;
	int ans=0;
	for(register int i=1;i<num;i++){
		int k=lower_bound(g+1,g+n+1,s[i])-g;
		d[i]=k;
		g[k]=s[i];
		ans=max(ans,d[i]);
	}
	printf("%d\n",ans);
	return 0;
}

回复

2 条回复,欢迎继续交流。

正在加载回复...