#P2708. Working out

Working out

题目描述

夏天要到了,dxbt\texttt{dxbt}songke\texttt{songke} 决定去健身。它们要去的健身房可以被看做一个 nnmm 列的矩阵。定义 ai,ja_{i,j} 为在健身房第 ii 行第 jj 列运动后消耗的卡路里。

dxbt\texttt{dxbt}(1,1)(1,1) 出发,要去 (n,m)(n,m)。并且,他只能从 (i,j)(i,j) 走到 (i+1,j)(i+1,j)(i,j+1)(i,j+1)songke\texttt{songke}(n,1)(n,1) 出发,要去 (1,m)(1,m)。并且,他只能从 (i,j)(i,j) 走到 (i1,j)(i-1,j)(i,j+1)(i,j+1)

由于 dxbt\texttt{dxbt}songke\texttt{songke} 要聚在一起发张自拍,他们必须在健身房的某行某列相遇。由于他们没有好好健身,所以在自拍地点的卡路里消耗不计入总卡路里消耗值。

如果 dxbt\texttt{dxbt}songke\texttt{songke} 中任何一个人完成了健身,则健身结束。你的任务是求出 dxbt\texttt{dxbt}songke\texttt{songke} 可以消耗的最大总卡路里值。

另外,由于他们的健身速度不一定相同,所以可以走过的路线长度也不一定相同。

输入格式

第一行包含两个整数 n,m(3n,m1000)n,m(3\le n,m\le1000),代表健身房的行数、列数。

接下来 nn 行每行 mm 个整数,表示 ai,ja_{i,j}

输出格式

一行一个整数,表示他们可能消耗的总卡路里的最大值。

3 3
100 100 100
100 1 100
100 100 100
800

dxbt\texttt{dxbt} 可以选择:$(1,1)\rightarrow(1,2)\rightarrow(2,2)\rightarrow(3,2)\rightarrow(3,3)$

songke\texttt{songke} 可以选择:$(3,1)\rightarrow(2,1)\rightarrow(2,2)\rightarrow(2,3)\rightarrow(1,3)$