rt
#include<iostream>
#include<cstdio>
using namespace std;
int fmax[500][500],fmin[500][500],s[500],a[500],n;
void loading()
{
}
int sum(int l,int r)
{
return s[r]-s[l-1];
}
void input()
{
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>a[i];
a[i+n]=a[i];
s[i]=s[i-1]+a[i];
}
for(int i=n+1;i<=2*n;i++)
{
s[i]=s[i-1]+a[i];
}
}
void dp()
{
for(int x=1;x<n;x++)
{
for(int i=1,j=i+x;j<2*n;i++,j=i+x)
{
fmin[i][j]=0x3f3f3f;
for(int k=i;k<j;k++)
{
fmax[i][j]=max(fmax[i][j],fmax[i][k]+fmax[k+1][j]+sum(i,j));
fmin[i][j]=min(fmin[i][j],fmin[i][k]+fmin[k+1][j]+sum(i,j));
}
}
}
}
void output()
{
int min_=0x3f3f3f,max_;
for(int i=1;i<=n;i++)
{
max_=max(max_,fmax[i][i+n-1]);
min_=min(min_,fmin[i][i+n-1]);
}
cout<<min_<<endl<<max_;
}
int main()
{
loading();
input();
dp();
output();
return 0;
}
改了之前输出没用max和min的错误后在机子上跑都能过了,交上去给我人弄傻了
样例洛谷输出为43 21926
机子上跑就是正解
真的不知道了,还请哪位大佬帮个忙吧