50pts 求条
查看原帖
50pts 求条
1024254
CloverLava楼主2025/1/14 10:35

数据开的够大吗

#include<bits/stdc++.h>
#define int long long
using namespace std;
int n, k, a[105][105], dp[105][105][5055], ans = -9e18;
signed main()
{
	cin>>n>>k;
	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 l = 0; l <= k; l++) dp[i][j][l] = -9e18; 
	for(int i = 1; i <= n; i++) 
	{
		for(int j = 1; j <= i; j++)
		{
			for(int l = 0; l <= k; l++)
			{
				dp[i][j][l] = max(dp[i-1][j][l], dp[i-1][j-1][l]) + a[i][j];
				if(l != 0) dp[i][j][l] = max(dp[i][j][l], max(dp[i-1][j][l-1] + a[i][j] * 3ll, dp[i-1][j-1][l-1] + a[i][j] * 3ll));
			}
		}
	}
	for(int i = 1; i <= n; i++) for(int l = 0; l <= k; l++) ans = max(ans, dp[n][i][l]);
	cout<<ans;
	return 0;
}
2025/1/14 10:35
加载中...