80分求调
查看原帖
80分求调
1006970
BarkFlorr楼主2024/7/1 21:46

记忆化搜索80分,求调,QwQ

#include<bits/stdc++.h>
using namespace std;
struct node{
	long long tou,wei,data=0;
}p[201][201];
long long n;
void dfs(long long x,long long y){
	if(x==y) return ;
	if(p[x][y].data) return ;
	for(long long i=x;i<y;i++){
		dfs(x,i);
		dfs(i+1,y);
		if(p[x][y].data<p[x][i].data+p[i+1][y].data+p[x][i].tou*p[x][i].wei*p[i+1][y].wei){
			p[x][y].data=p[x][i].data+p[i+1][y].data+p[x][i].tou*p[x][i].wei*p[i+1][y].wei;
			p[x][y].tou=p[x][i].tou;
			p[x][y].wei=p[i+1][y].wei;
		}
	}
}
int main(){
	cin>>n;
	for(long long i=1;i<=n;i++){
		cin>>p[i][i].wei;
		p[i][i].tou=p[i-1][i-1].wei;
		p[i+n][i+n]=p[i][i];
	}
	p[1][1].tou=p[n][n].wei;
	long long maxn=0;
	for(long long i=1;i<n;i++){
		dfs(i,i+n-1);
		maxn=max(maxn,p[i][i+n-1].data);
	}
	cout<<maxn;
	return 0;
}
2024/7/1 21:46
加载中...