CodeForces 429B B.Working out
来源:互联网 发布:淘宝违法店铺举报 编辑:程序博客网 时间:2024/05/16 14:17
题目传送门
题意:给你一个n*m的网格,A在(1,1)前往(n,m),B在(n,1)前往(m,1),每个人到达一个新的网格就能得到这个网格里面的数字,两个人必须在一个网格相遇(只能相遇一次),且两个人都不能获得这个网格里面的·数字。求两个人能获得最大数字和。
思路:一开始想到枚举,但是枚举每一个点在进行运算的话时间复杂度太高了,所以就一开始预处理一遍每一个点到四个角的最大值,然后在枚举就可以了。一定要注意细节,一开始我认为如果两个人在一个点相遇后就不会在遇见了,但是这个是不对,所以我们要把两个人相遇的两个方式枚举出来,然后还要注意边界是无法相遇的一开始这个地方也没有想到。
#include <algorithm>#include <cmath>#include <cstdio>#include <cstring>#include <fstream>#include <iostream>#include <list>#include <map>#include <queue>#include <set>#include <sstream>#include <stack>#include <string>#include <vector>#define MAXN 1010#define MAXE 5#define INF 100000000#define MOD 1000000007#define LL long long#define pi acos(-1.0)using namespace std;LL dp[MAXE][MAXN][MAXN];LL arr[MAXN][MAXN];int main() { std::ios::sync_with_stdio(false); int n, m; cin >> n >> m; memset(dp, 0, sizeof(dp)); for (int i = 1; i <= n; ++i) { for (int j = 1; j <= m; ++j) { cin >> arr[i][j]; } } for (int i = n; i >= 1; --i) { for (int j = m; j >= 1; --j) { dp[1][i][j] = max(dp[1][i + 1][j], dp[1][i][j + 1]) + arr[i][j]; } for (int j = 1; j <= m; ++j) { dp[2][i][j] = max(dp[2][i + 1][j], dp[2][i][j - 1]) + arr[i][j]; } } for (int i = 1; i <= n; ++i) { for (int j = 1; j <= m; ++j) { dp[3][i][j] = max(dp[3][i - 1][j], dp[3][i][j - 1]) + arr[i][j]; } for (int j = m; j >= 1; --j) { dp[4][i][j] = max(dp[4][i - 1][j], dp[4][i][j + 1]) + arr[i][j]; } } LL ans = 0; for (int i = 1; i <= n; ++i) { for (int j = 1; j <= m; ++j) { if (i == 1 || i == n || j == 1 || j == m) continue; LL sum = 0; sum = dp[1][i][j + 1] + dp[3][i][j - 1] + dp[2][i + 1][j] + dp[4][i - 1][j]; ans = max(ans, sum); sum = dp[1][i + 1][j] + dp[3][i - 1][j] + dp[2][i][j - 1] + dp[4][i][j + 1]; ans = max(ans, sum); } } cout << ans << endl; return 0;}
阅读全文
0 0
- Codeforces 429B Working out
- CodeForces 429B Working out
- CodeForces 429B Working out
- [dp] Codeforces 429B B. Working out
- codeforces 429B B. Working out(dp)
- dp Codeforces 429B B. Working out
- Codeforces 429B B. Working out dp
- CodeForces 429B B.Working out
- Codeforces 429B B. Working out
- Codeforces 429B Working out bfs构造
- Working out - CODEFORCES, 429B 动态规划
- Codeforces 429B - Working out (DP)
- CodeForces - 429B Working out(dp)
- Codeforces 429B Working out (动态规划)
- CodeForces 429B Working out 递推
- [题解] CodeForces 429B Working out
- Codeforces 429B B. Working out (DP)
- codeforces 429B B. Working out 详解(dp)
- 冒泡排序及其优化
- GitChat · 架构 | 大规模私有云产品自动升级的架构选型和实战
- request.getParameter()与request.setAttribute()的区别
- 深入理解Java线程池
- 【Python + selenium】在浏览器打开新页签,打开方式
- CodeForces 429B B.Working out
- kafka在zookeeper上的节点信息和查看方式
- QT 模板库、工具类和控件(三)
- iOS
- Linux 系统中用户切换
- RGB
- Android之四大组件、六大布局、五大存储
- CodeChef:Two Closest(最短路 & 思维)
- Initializing Spring root WebApplicationContext Debug Run as