hack,数据太水
查看原帖
hack,数据太水
985711
NightDiver楼主2023/7/26 10:24
#include <iostream>
#include <cstring>

#define N 35

using namespace std;

int n,f[N][N],root[N][N];

void p(int l,int r){
	if(l>r)return ;
	cout<<root[l][r]<<" ";
	if(l==r)return ;
	p(l,root[l][r]-1);
	p(root[l][r]+1,r);
}

int main(){
	cin>>n;
	for(int i=1;i<=n;++i){
		cin>>f[i][i];
		f[i][i-1]=1;
		root[i][i]=i;
	}
	
	for(int len=2;len<=n;++len){
		for(int l=1;l+len-1<=n;++l){
			int r=l+len-1;
			f[l][r]=f[l+1][r]+f[l][l];
			root[l][r]=l;
			for(int k=l+1;k<=r-1;++k){
				if (f[l][r]<f[l][k-1]*f[k+1][r]+f[k][k]){
					f[l][r]=f[l][k-1]*f[k+1][r]+f[k][k];
					root[l][r]=k;
				}
			}
		}
	}
	
	cout<<f[1][n]<<endl;
	p(1,n);
	return 0;
}

题面中提到,答案不超过 4×1e9,即unsigned int,但我的这份代码只开了int,却ac了

2023/7/26 10:24
加载中...