90pts,WA on 3
代码:
#include <bits/stdc++.h>
using namespace std;
long long a[200][200], dp[105][105][200], ans = -9e18;
int n, k;
int 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 <= n + 1; j++) {
for (int k = 0; k <= n; k++) {
dp[i][j][k] = -9e18;
}
}
}
for (int i = n; i >= 1; i--) {
for (int j = 1; j <= n; j++) {
for (int k = 0; k <= min(k, n - i + 1); k++) {
if (k > 0) {
dp[i][j][k] = max(dp[i + 1][j][k - 1] + 3 * a[i][j], dp[i + 1][j + 1][k - 1] + 3 * a[i][j]);
}
dp[i][j][k] = max(dp[i][j][k], max(dp[i + 1][j][k] + a[i][j], dp[i + 1][j + 1][k] + a[i][j]));
}
}
}
for (int i = 1; i <= min(n, k); i++) {
ans = max(ans, dp[1][1][i]);
}
cout << ans;
// cout << dp[1][1][k];
return 0;
}