求助
查看原帖
求助
677581
_Glassy_Sky_楼主2023/1/19 13:54
#include<bits/stdc++.h>
using namespace std;
int a[101], sum[101], f[101][101], f1[101][101];
int main()
{
	int n, sum = 0, ans = 1e9;
	cin >> n;
	for(int i = 1; i <= n; i ++)
	{
		cin >> a[i];
		a[i] += a[i - 1];
	}
	memset(f, 1e9, sizeof(f));
	for(int i = 1; i <= 2 * n; i ++)
	{
		f[i][i] = 0;
		f1[i][i] = 0;
		a[i] += a[i - 1];
	}
	for(int l = 1; l <= n; l ++)
		for(int i = 1; l + i <= 2 * n; i ++)
		{
			int j = i + l - 1;
			for(int k = i; k < j; k ++)
			{
				f[i][j] = min(f[i][j], f[i][k] + f[k + 1][j] + a[j] - a[i - 1]);
				f1[i][j] = max(f1[i][j], f1[i][k] + f1[k + 1][j] + a[j] - a[i - 1]);
			}
		}
	for(int i = 1; i <= n; i ++)
	{
		ans = min(ans, f[i][i + n - 1]);
		sum = max(sum, f1[i][i + n - 1]); 
	}	
	cout << ans << "\n" << sum;
	return 0;
}
2023/1/19 13:54
加载中...