80ptsWA on #5求助(玄关)
查看原帖
80ptsWA on #5求助(玄关)
1287433
__ycy1124__楼主2024/7/18 11:12
#include<bits/stdc++.h>
using namespace std;
long long int dp[101][101];
char ch[101];
int main(){
	int n;
	scanf("%d",&n);
	for(int i=1;i<=n;i++){
		cin>>ch[i];
		ch[i+n]=ch[i];
		scanf("%lld",&dp[i][i]);
		dp[i+n][i+n]=dp[i][i];
	}
	for(int len=2;len<=n;len++){
		for(int i=1;i+len-1<=n*2;i++){
			long long int ma=-1145140;
			for(int j=i;j+1<=i+len-1;j++){
				if(ch[j+1]=='t'){
					ma=max(dp[i][j]+dp[j+1][i+len-1],ma);
				}
				else{
					ma=max(dp[i][j]*dp[j+1][i+len-1],ma);
				}
			}
			dp[i][i+len-1]=ma;
		}
	}
	long long int ans=-1145140;
	for(int i=1;i+n-1<=2*n;i++){
		ans=max(ans,dp[i][i+n-1]);
	}
	printf("%lld\n",ans);
	for(int i=1;i<=n;i++){
		if(dp[i][i+n-1]==ans){
			printf("%d ",i);
		}
	}
	return 0;
}
2024/7/18 11:12
加载中...