神秘的神秘 • 8小时前
using namespace std; int f[201][201]; char c[201][201]; int dp[201][201][2];
int main() {
int n, m, k;
cin >> n >> m >> k;
k = min(k, n * m);
memset(dp, 0x3f, sizeof dp);
dp[0][0][0] = 0;
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= m; j++) {
cin >> f[i][j] >> c[i][j];
}
}
for (int i = 1; i <= m; i++) {
for (int j = n + 1, tf = 0, tc = 0; j >= 0; j--, tf += f[i][j], tc += (c[j][i] == 'N')) {
for (int l = 1; l <= k; l++) {
dp[i][l][1] = max(dp[i][l][1], dp[i - 1][l - tc][1] + tf);
if (j == n + 1 || c[j][i] == 'Y') {
dp[i][l][0] = max(dp[i][l][0], dp[i - 1][l - tc][0] + tf);
} else {
dp[i][l][1] = max(dp[i][l][1], dp[i - 1][l - tc][0] + tf);
}
}
}
}
cout << dp[m][k][1];
return 0;
}
评论:
include <bits/stdc++.h> using namespace std; int f[201][201]; char c[201][201]; int dp[201][201][2];
int main() {
int n, m, k; cin >> n >> m >> k; k = min(k, n * m); memset(dp, 0x3f, sizeof dp); dp[0][0][0] = 0; for (int i = 1; i <= n; i++) {
for (int j = 1; j <= m; j++) {
cin >> f[i][j] >> c[i][j];
}
} for (int i = 1; i <= m; i++) {
for (int j = n + 1, tf = 0, tc = 0; j >= 0; j--, tf += f[i][j], tc += (c[j][i] == 'N')) {
for (int l = 1; l <= k; l++) {
dp[i][l][1] = max(dp[i][l][1], dp[i - 1][l - tc][1] + tf);
if (j == n + 1 || c[j][i] == 'Y') {
dp[i][l][0] = max(dp[i][l][0], dp[i - 1][l - tc][0] + tf);
} else {
dp[i][l][1] = max(dp[i][l][1], dp[i - 1][l - tc][0] + tf);
}
}
}
} cout << dp[m][k][1]; return 0; }
请先登录,才能进行评论