好歹用滚动数组过了MLE这一关,然而TLE了……
#include<bits/stdc++.h>
using namespace std;
int n,a[100010],dp[100010],ans;
int main(){
scanf("%d",&n);
for(int i=1;i<=n;i++) scanf("%d",&a[i]);
for(int i=1;i<=n;i++){
for(int j=i;j>=0;j--){
dp[j]+=(a[i]==i-j);
if(j&&dp[j-1]>dp[j]) dp[j]=dp[j-1];
ans=max(ans,dp[j]);
}
}
printf("%d",ans);
return 0;
}
本萌新虚心请教,请问有大佬有优化方法吗?