3 solutions

  • 0
    @ 2024-3-29 21:09:46

    老师代码

    #include <bits/stdc++.h>
    using namespace std;
    #define int long long
    const int N = 105;
    int dp[N][N][N * N / 2], a[N][N];
    int n, k;
    signed main(){
    	cin >> n >> k;
    	for (int i = 1; i <= n; i++)
    		for (int j = 1; j <= i; j++)
    			cin >> a[i][j];
    	memset(dp, -0x3f, sizeof dp);
    	dp[1][1][0] = a[1][1];
    	dp[1][1][1] = a[1][1] * 3;
    	for (int i = 2; i <= n; i++)
    		for (int j = 1; j <= i; j++) {
    			for (int l = 0; l <= min(k, i); l++)
    				dp[i][j][l] = max(dp[i - 1][j][l], dp[i - 1][j - 1][l]) + a[i][j];
    			for (int l = 1; l <= min(k, i); l++)
    				dp[i][j][l] = max(dp[i][j][l], max(dp[i - 1][j][l - 1], dp[i - 1][j - 1][l - 1]) + a[i][j] * 3);
    		}
    	int ans = -1e18;
    	for (int i = 1; i <= n; i++)
    		for (int j = 0; j <= k; j++)
    			ans = max(ans, dp[n][i][j]);
    	cout << ans;
    	return 0;
    }
    

    Information

    ID
    1038
    Time
    1000ms
    Memory
    512MiB
    Difficulty
    7
    Tags
    # Submissions
    41
    Accepted
    9
    Uploaded By