题目连接:B. Working out

  我想了很久都没有想到怎么递推,看了题解后试着自己写,结果第二组数据就 wa 了,后来才知道自己没有判选择的两条路径是否只是一个交点。

  大概思路是:先预处理出每个格子到四个角落格子的路径最大数值,然后枚举两个人相遇的交点格子,枚举 A、B 的进来和出去方式(记两个线路为  1 和 2,考虑一个公共点,1 为左进右出,2 为下进上出;1 上进下出,2 为左进右出),然后求最大值即可。

  注意边界情况。

  原题解链接:http://blog.csdn.net/cc_again/article/details/25691925, http://blog.csdn.net/qq574857122/article/details/25625151

  我的代码:(全用宏定义了 -_-|| )

 #include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
#define sd(x) scanf("%d",&(x))
#define sd2(x,y) scanf("%d %d",&(x),&(y))
typedef long long LL; LL dp[][][], a[][]; #define For(i,s,t) for(int i = s; i <= t; ++i)
#define desFor(i,t,s) for(int i = t; i >= s; --i) int main() {
int n,m;
while(~sd2(n,m)) {
For(k,,) For(i,,n+)
dp[k][i][m + ] = ;
For(k,,) For(j,,m+)
dp[k][n + ][j] = ;
For(i,,n) For(j,,m)
sd(a[i][j]);
// 递推预处理出所有交点到 4 个角的最大值
For(i,,n) For(j,,m)
dp[][i][j] = max(dp[][i-][j], dp[][i][j-]) + a[i][j];
For(i,,n) desFor(j,m,)
dp[][i][j] = max(dp[][i-][j], dp[][i][j+]) + a[i][j];
desFor(i,n,) For(j,,m)
dp[][i][j] = max(dp[][i+][j], dp[][i][j-]) + a[i][j];
desFor(i,n,) desFor(j,m,)
dp[][i][j] = max(dp[][i+][j], dp[][i][j+]) + a[i][j];
LL ans = ;
// 枚举所有交点
For(i,,n-) For(j,,m-) {
// 第一种路径选择: A 从上往下穿过交点 dp[i][j],B 从左向右穿过 dp[i][j]
LL first = dp[][i-][j] + dp[][i+][j] + dp[][i][j+] + dp[][i][j-];
ans = max(ans, first);
// 第二种路径选择: A 从左向右穿过交点 dp[i][j],B 从上往下穿过 dp[i][j]
LL second = dp[][i][j-] + dp[][i][j+] + dp[][i-][j] + dp[][i+][j];
ans = max(ans, second);
}
printf("%I64d\n",ans);
}
return ;
}

CodeForces 429 B Working out(递推dp)的更多相关文章

  1. Codeforces 429B Working out(递推DP)

    题目链接:http://codeforces.com/problemset/problem/429/B 题目大意:两个人(假设为A,B),打算健身,有N行M列个房间,每个房间能消耗Map[i][j]的 ...

  2. 递推DP URAL 1167 Bicolored Horses

    题目传送门 题意:k个马棚,n条马,黑马1, 白马0,每个马棚unhappy指数:黑马数*白马数,问最小的unhappy值是多少分析:dp[i][j] 表示第i个马棚放j只马的最小unhappy值,状 ...

  3. 递推DP URAL 1017 Staircases

    题目传送门 /* 题意:给n块砖头,问能组成多少个楼梯,楼梯至少两层,且每层至少一块砖头,层与层之间数目不能相等! 递推DP:dp[i][j] 表示总共i块砖头,最后一列的砖头数是j块的方案数 状态转 ...

  4. 递推DP URAL 1260 Nudnik Photographer

    题目传送门 /* 递推DP: dp[i] 表示放i的方案数,最后累加前n-2的数字的方案数 */ #include <cstdio> #include <algorithm> ...

  5. 递推DP URAL 1353 Milliard Vasya's Function

    题目传送门 /* 题意:1~1e9的数字里,各个位数数字相加和为s的个数 递推DP:dp[i][j] 表示i位数字,当前数字和为j的个数 状态转移方程:dp[i][j] += dp[i-1][j-k] ...

  6. 递推DP URAL 1119 Metro

    题目传送门 /* 题意:已知起点(1,1),终点(n,m):从一个点水平或垂直走到相邻的点距离+1,还有k个抄近道的对角线+sqrt (2.0): 递推DP:仿照JayYe,处理的很巧妙,学习:) 好 ...

  7. 递推DP 赛码 1005 Game

    题目传送门 /* 递推DP:官方题解 令Fi,j代表剩下i个人时,若BrotherK的位置是1,那么位置为j的人是否可能获胜 转移的时候可以枚举当前轮指定的数是什么,那么就可以计算出当前位置j的人在剩 ...

  8. 递推DP HDOJ 5328 Problem Killer

    题目传送门 /* 递推DP: 如果a, b, c是等差数列,且b, c, d是等差数列,那么a, b, c, d是等差数列,等比数列同理 判断ai-2, ai-1, ai是否是等差(比)数列,能在O( ...

  9. hdu1978(递推dp)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1978 分析: 递推DP. dp[][]表示可以到达改点的方法数. 刚开始:外循环扫描所有点dp[x][ ...

  10. 递推DP URAL 1031 Railway Tickets

    题目传送门 /* 简单递推DP:读题烦!在区间内的都更新一遍,dp[]初始化INF 注意:s1与s2大小不一定,坑! 详细解释:http://blog.csdn.net/kk303/article/d ...

随机推荐

  1. python: html

    1. 三把利剑(html css js) css(颜色 位置) js (动) 2. 标签的分类:块级标签和行内标签 块级标签(div h p) 行内标签(span) 3. 标签存在的意义:为了方便操作 ...

  2. angularJS directive详解

    前言 最近学习了下angularjs指令的相关知识,也参考了前人的一些文章,在此总结下. 欢迎批评指出错误的地方. Angularjs指令定义的API AngularJs的指令定义大致如下 angul ...

  3. Pupu(快速幂取模)

    Pupu Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submissi ...

  4. Linux 线程与进程,以及通信

    http://blog.chinaunix.net/uid-25324849-id-3110075.html 部分转自:http://blog.chinaunix.net/uid-20620288-i ...

  5. LInux ugo权限详解[修]

    Linux 中的用户和组是用来控制使用者或者进程可以或者不可以使用哪些资源和硬件,是Linux权限控制最基本的方式. 用户和组可以看一下上一章的部分,先来看一下权限. 一.权限概览 在Linux下,使 ...

  6. DailyReport自动保存工具

    PS:自己初学C#,SharePoint时做的一个小tool. Friday, November 28, 2014 ​这个tool编译出来以后可以把部门的daily report保存到本地,数据库,和 ...

  7. 使用Jvisualvm监控JVM的内存、CPU、线程

    最近做性能测试发现很多性能问题,面对一些开发小白的数据结构思想,真想喊一声:放开那个代码,让我来!冲动. 面对WEB站点开发,性能测试是经常要做的,下面一种介绍如何结合性能测试工具,更好的监控WEB服 ...

  8. NOIP 营业额统计 splay tree 纯模板

    2924: 营业额统计 Time Limit(Common/Java):1000MS/3000MS     Memory Limit:65536KByteTotal Submit: 389       ...

  9. Python3基础 大于一个数的同时小于一个数

    镇场诗:---大梦谁觉,水月中建博客.百千磨难,才知世事无常.---今持佛语,技术无量愿学.愿尽所学,铸一良心博客.------------------------------------------ ...

  10. 【翻译】Anatomy of a Program in Memory—剖析内存中的一个程序(进程的虚拟存储器映像布局详解)

    [翻译]Anatomy of a Program in Memory—剖析内存中的一个程序(进程的虚拟存储器映像布局详解) . . .