63分求调TT
  • 板块P1388 算式
  • 楼主xinlong666
  • 当前回复5
  • 已保存回复5
  • 发布时间2025/8/4 13:44
  • 上次更新2025/8/4 18:29:11
查看原帖
63分求调TT
867904
xinlong666楼主2025/8/4 13:44
#include <bits/stdc++.h>
#define int long long
#define endl '\n'
using namespace std;
int dp[20][20][20];//jix
signed main (){
	ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
	int n,m;
	cin >> n >> m;
	for(int i = 1 ; i <= n ; i ++){
		cin >> dp[i][i][0] = a[i];
	}
	for(int l = 2 ; l <= n ; l++){
		for (int x = 0 ; x<= min(l-1,m) ; x ++){
			for (int i = 1 ; i+l-1<=n ; i ++){
				int j = i+l-1;
				for (int k = i ; k < j ; k ++){
					int num = min(x,k-i);
					for(int cnt = 0;cnt<=num;cnt++){//cnt为前半段使用乘号数量
						dp[i][j][x] = max(dp[i][j][x],dp[i][k][cnt]+dp[k+1][j][num-cnt]);
						dp[i][j][x+1] = max(dp[i][j][x+1],dp[i][k][cnt]*dp[k+1][j][num-cnt]);
					}
				}
			}
		}
	}
	cout <<dp[1][n][m] << endl;
	return 0;
}
2025/8/4 13:44
加载中...