60分求调
查看原帖
60分求调
1080304
Mario_iostream楼主2025/1/28 16:18
#include<bits/stdc++.h>
using namespace std;
const int MAXN = 85;
int a[MAXN][MAXN];
long long dp[MAXN][MAXN];
long long solve(int n, int m) {
	long long ans = 0;
	for (int k = 1; k <= n; k++) {
		memset(dp, 0, sizeof(dp));
		for (int len = 1; len <= m; len++) {
			for (int i = 1; i + len - 1 <= m; i++) {
				int j = i + len - 1;
				dp[i][j] = max(dp[i+1][j] + a[k][i] * pow(2, m-j+i), dp[i][j-1] + a[k][j] * pow(2, m-j+i));
			}
		}
		ans += dp[1][m];
	}
	return ans;
}
int main() {
	int n, m;
	cin >> n >> m;
	for (int i = 1; i <= n; i++) {
		for (int j = 1; j <= m; j++) cin >> a[i][j];
	}
	cout << solve(n, m) << endl;
	return 0;
}
2025/1/28 16:18
加载中...