比赛时只想到了n^3 队友间略推了下还以为是指数级的就没再推 写了写发现还是n ^3 待补吧 (1e4
#include <bits/stdc++.h>
using namespace std;
#define pb push_back
#define fast ios_base::sync_with_stdio(0), cin.tie(0),cout.tie(0)
long long dp[1010][1010],ans[1010][1010],n;
long long a[1010];
int main()
{
cin>>n;
for(int i=1;i<=n;i++)cin>>a[i];
for(int i=1;i<=n;i++)
{
for(int j=1;j<=i;j++)
{
long long mi=1e18,ma=0;
for(int k=j;k<=i;k++)
{mi=min(mi,a[k]);ma=max(ma,a[k]);}
ans[j][i]=ma-mi;
}
}
for(int i=0;i<n;i++)
{
for(int j=i;j<n;j++)
{
for(int k=j+1;k<=n;k++)
{
long long temp=dp[j][i]+ans[j+1][k];
dp[k][i+1]=max(dp[k][i+1],temp);
}
}
}
for(int i=1;i<=n;i++)
cout<<dp[n][i]<<endl;
return 0;
}
在这里插入代码片