求助
查看原帖
求助
882092
zMinYu楼主2023/5/20 22:19
#include<bits/stdc++.h>
using namespace std;
int n;
long long f[305][305],g[305][305],a[305];
int main()
{
    ios::sync_with_stdio(false);
    cin.tie(0);
    cin>>n;
    memset(f,0x3f,sizeof(f));
    memset(g,-1,sizeof(g));
	for(int i=1;i<=n;i++)
    {
    	cin>>a[i];
    	a[i+n]=a[i];
    	f[i][i]=0;
    	g[i][i]=0;
	}
    for(int len=2;len<=n;len++)
    {
    	for(int l=1;l+len-1<=n+n;l++)
    	{
    		int r=l+len-1;
    		int sum=0;
    		for(int k=l;k<=r;k++)
    		{
    			sum+=a[k];
			}
    		for(int k=l;k<=r-1;k++)
    		{
    			g[l][r]=max(g[l][k]+g[k+1][r]+sum,g[l][r]);
    			f[l][r]=min(f[l][k]+f[k+1][r]+sum,f[l][r]);
			}
		}
	}
	long long ans1=0x3f3f3f3f,ans2=-1;
	for(int i=1;i<=n;i++)
	{
		ans1=min(f[i][i+n-1],ans1);
		ans2=max(g[i][i+n-1],ans2);
	}
	cout<<ans1<<"\n"<<ans2;
	return 0;
}

样例都过不了

2023/5/20 22:19
加载中...