T5 题解
2025-03-31 22:40:13
发布于:浙江
14阅读
0回复
0点赞
前缀和优化dp
#include <bits/stdc++.h>
using namespace std;
int main() {
int n, m;
cin >> n >> m;
vector<vector<long long>> dp(n + 10, vector<long long>(m + 10, 0));
vector<vector<long long>> l(n + 10, vector<long long>(m + 10, 0));
vector<vector<long long>> r(n + 10, vector<long long>(m + 10, 0));
vector<vector<long long>> a(n + 10, vector<long long>(m + 10,0));
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= m; j++){
cin>>a[i][j];
dp[i][j] = max(l[i - 1][j - 1], r[i - 1][j + 1]) + a[i][j];
}
for (int j = 1; j <= m; j++) l[i][j] = max(l[i][j - 1], dp[i][j]);
for (int j = m; j >= 1; j--) r[i][j] = max(r[i][j + 1], dp[i][j]);
}
if(m==1)cout<<a[1][1];
else cout << l[n][m] << endl;
return 0;
}
这里空空如也
有帮助,赞一个