马蜂良好20pt球调
查看原帖
马蜂良好20pt球调
1004709
childrenman123楼主2024/11/25 18:21
#include<iostream>
using namespace std;
int sum[100010],a[100010],n,dp1[310][310],dp2[310][310];
int main()
{
	cin>>n;
	for(int i=1;i<=n;i++)
	{
		for(int j=1;j<=n;j++)
		{
			dp1[i][j]=0x3f3f3f3f;
			dp2[i][j]=-0x3f3f3f3f;
		}
	}
	for(int i=1;i<=n;i++)
	{
		cin>>a[i];
		sum[i]=a[i]+sum[i-1];
		dp1[i][i]=0;
		dp2[i][i]=0;
	}
	for(int l=1;l<=n-1;l++)//长度 
	{
		for(int i=1;l+i<=n;i++)//起点 
		{
			int j=l+i;//终点
			for(int k=i;k<j;k++)
			{
				dp1[i][j]=min(dp1[i][j],dp1[i][k]+dp1[k+1][j]+sum[j]-sum[i-1]); 
				dp2[i][j]=max(dp2[i][j],dp2[i][k]+dp2[k+1][j]+sum[j]-sum[i-1]); 
			}
		}
	}
	cout<<dp1[1][n]-1<<endl<<dp2[1][n];
	return 0;
 } 
2024/11/25 18:21
加载中...