输出是样例2倍,除了个2就过了????
查看原帖
输出是样例2倍,除了个2就过了????
431489
trf2476楼主2021/8/9 09:56

为什么?

#include <iostream>
#include <bits/stdc++.h>
using namespace std;
int n;
long long a[2002],f[2002][2002];
int main() {
	cin>>n;
	for(int i=1;i<=n;i++){
		cin>>a[i];
		a[i+n]=a[i];
		f[i][i]=a[i];
		f[i+n][i+n]=a[i];
	}
	n*=2;
	for(int len=3;len<=n;len++){
		for(int l=1;l<=n-len+1;l++){
			int r=l+len-1;
			for(int k=l+1;k<r;k++){
				f[l][r]=max(f[l][r],f[l][k]+f[k][r]+a[l]*a[r]*a[k]);
			}
		}
	}
	long long maxx=0;//不用long long 90分 
	for(int i=1;i<=n;i++){
		maxx=max(maxx,f[i][i+n-1]);
	}
	cout<<maxx/2;//输出是样例2倍,除了个2就过了???? 
	return 0;
}

2021/8/9 09:56
加载中...