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[我死])祭