优化前还有50,优化后一点没有了,求助
查看原帖
优化前还有50,优化后一点没有了,求助
550898
xjx199楼主2024/5/6 00:31
#include<bits/stdc++.h>
using namespace std;
#define int long long
const int MAXN=100001;
int n,a[MAXN],b[MAXN],dp[2][MAXN],ans;
signed main(){
	scanf("%lld",&n);
	for(int i=1;i<=n;i++) scanf("%lld",&a[i]);
	for(int i=1;i<=n;i++) scanf("%lld",&b[i]);
	for(int i=1;i<=n;i++){
		for(int j=1;j<=n;j++)
			if(a[i]==b[j]) dp[1][j]=dp[0][j-1]+1;
			else dp[1][j]=max(dp[0][j],dp[1][j-1]);
		memcpy(dp[0],dp[1],(n+1)*4); //dp[0]目标 dp[1]被拷贝 (n+1)*4内存占用 
	}
	printf("%lld\n",dp[1][n]);
	return 0;
}
2024/5/6 00:31
加载中...