xg代码在线求调
查看原帖
xg代码在线求调
1027690
IAKIOI__楼主2024/6/11 20:57
#include<bits/stdc++.h>
#define int long long
using namespace std;
int n,a[200],s[200],f[1000][1000],g[1000][1000],ans=-1e9;
signed main(){
	cin>>n;
	for(int i=1;i<=n;i++){
		char c;
		cin>>c>>a[i];
		a[i+n]=a[i];
		s[i+n]=s[i]=((c=='t')?1:0);// +1 *0
	}
	s[2*n+1]=s[n+1];
	memset(f,-1e9,sizeof(f));
	memset(g,1e9,sizeof(g));
	for(int i=1;i<=2*n;i++){
		f[i][i]=g[i][i]=a[i];
	}
	for(int len=2;len<=n;len++){
		for(int i=1;i<=n*2-len+1;i++){
			int j=i+len-1;
			for(int mid=i;mid<j;mid++){
				if(s[mid+1]){
					f[i][j]=max(f[i][j],f[i][mid]+f[mid+1][j]);
              		g[i][j]=min(g[i][j],g[i][mid]+g[mid+1][j]);
				}else{
					f[i][j]=max(f[i][j],max(f[i][mid]*f[mid+1][j],max(g[i][mid]*g[mid+1][j],max(f[i][mid]*g[mid+1][j],g[i][mid]*f[mid+1][j]))));
 	                g[i][j]=min(g[i][j],min(f[i][mid]*f[mid+1][j],min(g[i][mid]*g[mid+1][j],min(f[i][mid]*g[mid+1][j],g[i][mid]*f[mid+1][j]))));
				}
			}
		}
	}
	for(int i=1;i<=n;i++){
		ans=max(f[i][i+n-1],ans);
	}
	cout<<ans<<"\n";
	for(int i=1;i<=n;i++){
		if(f[i][i+n-1]==ans){
			cout<<i<<" ";
		} 
	}
	return 0;
}
2024/6/11 20:57
加载中...