求助,只得10分
查看原帖
求助,只得10分
1200191
封禁用户楼主2024/7/22 15:32

#include <bits/stdc++.h> #include using namespace std; int n, m; int main() { cin >> n >> m; vector<vector > matrix(n, vector(m)); for (int i = 0; i < n; ++i) { for (int j = 0; j < m; ++j) { cin >> matrix[i][j]; } } vector<vector > dp(m + 1, vector(n + 1, 0)); for (int i = 1; i <= m; ++i) { int left = 0, right = 0; for (int j = 1; j <= n; ++j) { if (i == 1) { dp[i][j] = 2 * matrix[j - 1][0]; } else { left += 2 * (matrix[j - 1][0] << (i - 1)); right += 2 * (matrix[j - 1][m - 1] << (i - 1)); } dp[i][j] = max(dp[i][j - 1], dp[i - 1][j]) + max(left, right); } } cout << dp[m][n] << endl; return 0; }

2024/7/22 15:32
加载中...