一个玄学的问题
查看原帖
一个玄学的问题
688783
SilverLi楼主2023/2/4 11:37

CodeCode

#include <bits/stdc++.h>
using namespace std;
#define int long long 
const int N=105;
int n,a[N],dp2[N][N];
int dp[N][N],sum[N*2];
signed main() {
//	ios::sync_with_stdio(false);
//	cin.tie(NULL); cout.tie(NULL);
	cin>>n;
	for(int i=1;i<=n;++i) {
		cin>>a[i];
		a[n+i]=a[i];
		sum[i]=sum[i-1]+a[i];
	}
	for(int i=n+1;i<=n*2;++i)
		sum[i]=sum[i-1]+a[i];
	/*for(int i=1;i<=n*2;++i)
		cout<<a[i]<<" ";
	cout<<endl;
	for(int i=1;i<=n*2;++i)
		cout<<sum[i]<<" ";
	cout<<endl;*/
	for(int len=1;len<=n;++len)
		for(int i=1;i+len<=n*2;++i) {
			int j=i+len;
			dp2[i][j]=1000000000;
			for(int k=i;k<j;++k)
				dp[i][j]=max(dp[i][j],dp[i][k]+dp[k+1][j]+sum[j]-sum[i-1]),
				dp2[i][j]=min(dp2[i][j],dp2[i][k]+dp2[k+1][j]+sum[j]-sum[i-1]);
		}
	int ans,ans2=INT_MAX;
	for(int i=1;i<=n;++i)
		ans=max(ans,dp[i][n+i-1]),
		ans2=min(ans2,dp2[i][n+i-1]);
	cout<<ans2<<endl<<ans;
	return 0;
}

LOOK!我中间的注释掉的那一行,用来DUBUG,

我加上它,最后的答案就对了?!

删掉它——错了, 最大值错了

dalaodalao 知道怎么改吗?

(在线等

2023/2/4 11:37
加载中...