WA3
查看原帖
WA3
1050431
DevilsFlame楼主2024/5/26 10:39

这个应该可以过吧,WA7、9、10

#include<bits/stdc++.h>
using namespace std;
int n,m,a[610],f1[610][610],sum[610],ans1 = 2147483647;
int main()
{
	scanf("%d",&n);
	for(int i = 1;i <= n;i ++)
	{
		scanf("%d",&a[i]);
		a[i + n] = a[i];
		sum[i] = sum[i - 1] + a[i];
		f1[i][i] = 0;
	}
	for(int i = n + 1;i <= 2 * n;i ++)
		sum[i] = sum[i - 1] + a[i],f1[i][i] = 0;
	for(int l = 2;l <= n;l ++)
		for(int i = 1;i <= 2 * n - l + 1;i ++)
		{
			int j = i + l - 1;
			f1[i][j] = 2147483647;
			for(int k = i;k < j;k ++)
			{
				f1[i][j] = min(f1[i][j],f1[i][k] + f1[k + 1][j]);
			}
			f1[i][j] += sum[j] - sum[i - 1];
		}
	for(int i = 1;i <= n;i ++)
		ans1 = min(ans1,f1[i][n - 1 + i]);
	printf("%d\n",ans1);
	return 0;
}
2024/5/26 10:39
加载中...