优化前还有50,优化后一点没有了,求助

P1439 【模板】最长公共子序列

xjx199 @ 2024-05-06 00:31:20

#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;
}

by World_Creater @ 2024-05-06 06:54:37

  1. 你这个就算对了也还是过不去罢。
  2. 你开了 #define int long long 所以单个变量大小变成了 8memcpy 可能会出问题。

|