time limit per test  2 seconds
memory limit per test  256 megabytes
input  standard input
output  standard output

Summer is coming! It's time for Iahub and Iahubina to work out, as they both want to look hot at the beach. The gym where they go is a matrix a with n lines and m columns. Let number a[i][j] represents the calories burned by performing workout at the cell of gym in the i-th line and the j-th column.

Iahub starts with workout located at line 1 and column 1. He needs to finish with workout a[n][m]. After finishing workout a[i][j], he can go to workout a[i + 1][j] or a[i][j + 1]. Similarly, Iahubina starts with workout a[n][1] and she needs to finish with workout a[1][m]. After finishing workout from cell a[i][j], she goes to either a[i][j + 1] or a[i - 1][j].

There is one additional condition for their training. They have to meet in exactly one cell of gym. At that cell, none of them will work out. They will talk about fast exponentiation (pretty odd small talk) and then both of them will move to the next workout.

If a workout was done by either Iahub or Iahubina, it counts as total gain. Please plan a workout for Iahub and Iahubina such as total gain to be as big as possible. Note, that Iahub and Iahubina can perform workouts with different speed, so the number of cells that they use to reach meet cell may differs.

Input

The first line of the input contains two integers n and m (3 ≤ n, m ≤ 1000). Each of the next n lines contains m integers: j-th number from i-th line denotes element a[i][j] (0 ≤ a[i][j] ≤ 105).

Output

The output contains a single number — the maximum total gain possible.

Examples
input
3 3
100 100 100
100 1 100
100 100 100
output
800
Note

Iahub will choose exercises a[1][1] → a[1][2] → a[2][2] → a[3][2] → a[3][3]. Iahubina will choose exercisesa[3][1] → a[2][1] → a[2][2] → a[2][3] → a[1][3].

/*/
题意: 两个人在一块草地上散步 分别从map[1][1]-->map[n][m];map[n][1]-->map[1][m]; 两个人一个只能向右或者下移动,一个只能向左下移动,并且两人只相遇一次 每走一块地会获得相应的值 问他们两个人走到目的地能获得值的总和的最大的值是多少。

思路: 这个题目很有意思,虽然算是个水题,因为两个人只能有一点同时走,并且这点的值两人都不取,那这块地就可以以这个相遇点为中心分成四块。 上图:
以一个角的状态方程为例子 dp[i][j]=dp[i][j]+max(dp[i-1][j],dp[i][j-1]);
AC代码: /*/
#include"map"
#include"cmath"
#include"string"
#include"cstdio"
#include"vector"
#include"cstring"
#include"iostream"
#include"algorithm"
using namespace std;
typedef long long LL;
#define memset(x,y) memset(x,y,sizeof(x))
const int MX=1005; LL dp1[MX][MX];
LL dp2[MX][MX];
LL dp3[MX][MX];
LL dp4[MX][MX]; int main() {
int m,n;
memset(dp1,0);
memset(dp2,0);
memset(dp3,0);
memset(dp4,0);
while(~scanf("%d%d",&n,&m)) {
for(int i=1; i<=n; i++) {
for(int j=1; j<=m; j++) {
scanf("%I64d",&dp1[i][j]);
dp2[i][j]=dp3[i][j]=dp4[i][j]=dp1[i][j];
}
}
for(int i=1; i<=n; i++) {
for(int j=1; j<=m; j++) {
dp1[i][j]+=max(dp1[i-1][j],dp1[i][j-1]);
}
}
for(int i=1; i<=n; i++) {
for(int j=m; j>=1; j--) {
dp2[i][j]+=max(dp2[i-1][j],dp2[i][j+1]);
}
}
for(int i=n; i>=1; i--) {
for(int j=m; j>=1; j--) {
dp3[i][j]+=max(dp3[i+1][j],dp3[i][j+1]);
}
}
for(int i=n; i>=1; i--) {
for(int j=1; j<=m; j++) {
dp4[i][j]+=max(dp4[i+1][j],dp4[i][j-1]);
}
}
LL ans=0;
for(int i=2; i<n; i++) {
for(int j=2; j<m; j++) {
ans=max(ans,dp1[i-1][j]+dp3[i+1][j]+dp2[i][j+1]+dp4[i][j-1]);
ans=max(ans,dp1[i][j-1]+dp3[i][j+1]+dp2[i-1][j]+dp4[i+1][j]);
}
}
printf("%I64d\n",ans);
}
return 0;
}

  

ACM: HDU 1028 Working out 解题报告-DP的更多相关文章

  1. ACM : HDU 2899 Strange fuction 解题报告 -二分、三分

    Strange fuction Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Tot ...

  2. HDU 4303 Hourai Jeweled 解题报告

    HDU 4303 Hourai Jeweled 解题报告 评测地址: http://acm.hdu.edu.cn/showproblem.php?pid=4303 评测地址: https://xoj. ...

  3. ACM: HDU 1028 Ignatius and the Princess III-DP

     HDU 1028 Ignatius and the Princess III Time Limit:1000MS     Memory Limit:32768KB     64bit IO Form ...

  4. 2013 ACM/ICPC 成都网络赛解题报告

    第三题:HDU 4730 We Love MOE Girls 传送门:http://acm.hdu.edu.cn/showproblem.php?pid=4730 水题~~~ #include < ...

  5. hdu 1514 Free Candies 解题报告

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1514 题目意思:有4堆糖果,每堆糖果有n个,从上到下排好,取糖果只能从上往下取,取完的糖果放在篮子里, ...

  6. hdu 2544 最短路 解题报告

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2544 题目意思:给出 n 个路口和 m 条路,每一条路需要 c 分钟走过.问从路口 1 到路口 n 需 ...

  7. hdu 1972.Printer Queue 解题报告

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1972 题目意思:需要模拟打印机打印.打印机里面有一些 job,每个job被赋予1-9的其中一个值,越大 ...

  8. hdu 1014.Uniform Generator 解题报告

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1014 题目意思:给出 STEP 和 MOD,然后根据这个公式:seed(x+1) = [seed(x) ...

  9. hdu 1232 畅通工程 解题报告

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1232 并查集入门题.最近在学并查集,它无非包括三个操作:make_set(x).union_set(x ...

随机推荐

  1. VS对路径的访问被拒绝

    问题:权限问题. 1.检查自己电脑账户.是否是Administrator.如果没有启用.在[我的电脑]——[管理]——[本地用户和组]——[用户]——[Administrator]——[属性启用] 2 ...

  2. 在SSIS包中的事务处理

    在处理SSIS包的数据ETL操作过程中,我们经常遇到的一个问题就是一系列步骤在运行的过程中,如果中间的一个步骤失败了,那么我们就需要清理前面已经运行过的步骤所产生的数据或者结果,这往往是一个很头疼的过 ...

  3. 异常:System.BadImageFormatException,未能加载正确的程序集XXX

    IDE:VS2015 语言:C# 异常:System.BadImageFormatException,未能加载正确的程序集XXX或其某一依赖项... 一般是由于目标程序的目标平台与其某一依赖项的目标编 ...

  4. jquery audio player

    <!DOCTYPE html><html lang="en"> <head>  <meta charset="utf-8&quo ...

  5. C语言字符串长度(转)

    C语言字符串长度的计算是编程时常用到的,也是求职时必考的一项. C语言本身不限制字符串的长度,因而程序必须扫描完整个字符串后才能确定字符串的长度. 在程序里,一般会用strlen()函数或sizeof ...

  6. loj 1271

    题目链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=26981 思路:题目的意思是求给定的起点到终点的最短路径序列,并且这 ...

  7. ios 区域检测 使用coreLocation

    #import "ViewController.h" #import <CoreLocation/CoreLocation.h> @interface ViewCont ...

  8. CSS 基本1

    HTML元素可以分为两种: 块级元素 内联元素(行内元素) 两者的区别在于以下三点: 块级元素会独占一行(即无法与其他元素显示在同一行内,除非你显示修改元素的 display 属性),而内联元素则都会 ...

  9. Hbase原理、基本概念、基本架构

    来源:http://blog.csdn.net/woshiwanxin102213/article/details/17584043 概述 HBase是一个构建在HDFS上的分布式列存储系统:HBas ...

  10. cve-2015-1635漏洞分析

    上周(2015.4.15)爆出的cve-2015-1635漏洞,遂分析一番,留作记录.使用poc如下. wget 192.168.16.168/welcome.png --debug --header ...