AC

神秘的神秘  •  8小时前


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;

}


评论:

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; }


Lee  •  4小时前

请先登录,才能进行评论