为什么加上特判会WA几个点
查看原帖
为什么加上特判会WA几个点
378195
icaijy楼主2024/12/2 18:07
#include <bits/stdc++.h>
#define MAX 1000000000000000000
#define int long long
using namespace std;

int a[5005];
int dp[5005][5005];

signed main(){
    int n;
    cin>>n;
    cout<<0<<" ";
    if (n==1) return 0;
    int ans=MAX;
    for (int i=1;i<=n;i++){
        cin>>a[i];
        dp[i-1][i]=abs(a[i-1]-a[i]);
        ans=min(ans,dp[i-1][i]);
    }
    cout<<ans<<" ";
    for (int l=3;l<=n;l++){
        ans=MAX;
        for (int i=1;i<=n-l+1;i++){
            int j=i+l-1;
            dp[i][j]=dp[i+1][j-1]+abs(a[i]-a[j]);
            ans=min(ans,dp[i][j]);
        }
        cout<<ans<<" ";
    }
}

把前面的一些特判去了直接 l11开始就没事了?

2024/12/2 18:07
加载中...