rt
为啥最小值会差那么一点啊
#include<iostream>
#include<cstdio>
using namespace std;
int fmax[500][500],fmin[500][500],s[500],a[500],n;
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_,fmax[i][i+n-1]);
min_=(min_,fmin[i][i+n-1]);
}
cout<<min_<<endl<<max_;
}
int main()
{
input();
dp();
output();
return 0;
}
谢谢各位了