不知错在哪
查看原帖
不知错在哪
593492
_wronganswer_楼主2024/5/18 19:08
#include<bits/stdc++.h>
using namespace std;
const int N=1310;
int sum[N],n,dp_max[N][N],a[N],dp_min[N][N],mn=INT_MAX,mx;
int cost(int x,int y){
	return sum[y]-sum[x-1];
}
int main(){
	cin>>n;
	sizeof(dp_min,0x3f,sizeof(dp_min));
	sizeof(dp_max,0xbf,sizeof(dp_max));
	for(int i=1;i<=n;++i)cin>>a[N];
	for(int i=1;i<=n*2;i++){
		dp_max[i][i]=dp_min[i][i]=0;
		a[i+n]=a[i];
		sum[i]=sum[i-1]+a[i];
	}
	for(int len=2;len<=n;++len){
		for(int i=1,j=i+len-1;j<=n*2;++i,++j){
			for(int k=i;k<j;++k){
				dp_min[i][j]=min(dp_min[i][j],dp_min[i][k]+dp_min[k+1][j]+cost(i,j));
				dp_max[i][j]=max(dp_max[i][j],dp_max[i][k]+dp_max[k+1][j]+cost(i,j));
			}
				
		}
	}
	for(int i=1;i<=n;i++){
		mx=max(mx,dp_max[i][i+n-1]);
		mn=min(mn,dp_min[i][i+n-1]);
	}
	cout<<mn<<"\n"<<mx;
}
2024/5/18 19:08
加载中...