20分求助

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

Qtl123 @ 2023-12-10 20:21:49

#include<bits/stdc++.h>
using namespace std;
int main(){
    int n,a[10000000],b[10000000],dp[10000][1000]={};
    cin>>n;
    for(int i=1;i<=n;i++){
        cin>>a[i];
    }
    for(int j=1;j<=n;j++){
        cin>>b[j];
    }
    for(int i=1;i<=n;i++){
        for(int j=1;j<=n;j++){
            if(a[i-1]==b[j-1]){
                dp[i][j]=dp[i-1][j-1]+1;
            }else{
                dp[i][j]=max(dp[i-1][j],dp[i][j-1]);
            }
        }
    }
    cout<<dp[n][n];
}

请大佬指点


by __ok__ @ 2024-02-22 10:01:11

为什么要是a[i-1]==b[j-1]

亲试a[i]==b[j]能拿50分


by __ok__ @ 2024-02-22 10:03:45

你这个方法是针对50%的数据(n≤10³)写的 ,最多50分


by __ok__ @ 2024-02-22 10:09:10

正解要加二分


by I_like_play_eggy @ 2024-05-04 13:03:23

真不会 MLE(验证码 yyj4[我死])祭


|