40ptsDP求助
查看原帖
40ptsDP求助
1183074
xzy_AK_IOI楼主2024/8/8 10:10
#include<bits/stdc++.h>
using namespace std;
const int N=1e2+10;
const int M=5e3+10;
const long long inf=1e18;
long long dp[N][N][M];
int a[N][N];
int n,m,t;
signed main()
{
	ios::sync_with_stdio(0);
	cin.tie(0);
	cin>>n>>t;
	for (int i=1;i<=n;i++){
		for (int j=1;j<=i;j++){
			cin>>a[i][j];
		}
	}
	for (int i=1;i<=n;i++){
		for (int j=1;j<=i;j++){
			for (int k=0;k<=t;k++){
				dp[i][j][k]=max(dp[i-1][j][k]+a[i][j],dp[i-1][j-1][k]+a[i][j]);
				if (k+1<=t) dp[i][j][k]=max(dp[i-1][j][k+1]+a[i][j]*3,dp[i][j][k]);
				if (k+1<=t) dp[i][j][k]=max(dp[i-1][j-1][k+1]+a[i][j]*3,dp[i][j][k]);
			}
		}
	}
	long long maxn=-inf;
	for (int i=1;i<=n;i++){
		for (int j=0;j<=t;j++){
			maxn=max(maxn,dp[n][i][j]);
		}
	}
	cout<<maxn;
	return 0;
}
2024/8/8 10:10
加载中...