#P5014. 蜗牛寻宝

蜗牛寻宝

题目名称:蜗牛的宝藏路径

题目描述

蜗牛来到了一个神秘的矩形区域,该区域被划分为 nnmm 列的格子,每个格子中都存放有一定数量的宝藏。蜗牛会选择一个格子作为起点,之后只能沿直线方向移动:要么一直向右走,要么一直向下走。

蜗牛有一个贪心的要求:移动路径上经过的格子,其宝藏数量必须严格递增(即下一个格子的宝藏数必须大于当前格子的宝藏数)。当满足以下任一条件时,蜗牛会停止移动:

  1. 无法找到满足“严格递增”条件的下一个格子;
  2. 移动到了矩形的最下面一行(无法继续向下)或最右边一列(无法继续向右)。

请你计算蜗牛最多能拿走多少宝藏(即路径上所有格子的宝藏数之和的最大值)。

输入格式

第一行输入两个正整数 nnmm1n,m1031 \leq n, m \leq 10^3),分别表示矩形的行数和列数。
接下来 nn 行,每行输入 mm 个正整数 aija_{ij}1aij1091 \leq a_{ij} \leq 10^9),其中 aija_{ij} 表示第 ii 行第 jj 列格子中的宝藏数量(行号从 1 开始,列号从 1 开始)。

输出格式

输出一行一个整数,表示蜗牛最多能拿走的宝藏数。

样例输入

2 2
1 4
2 3

样例输出

5

样例解释

我们需要枚举所有可能的起点和移动方向(向右/向下),计算每条合法路径的宝藏和,最终取最大值:

  1. 起点 (1,1)(第 1 行第 1 列)

    • 向右移动:路径为 (1,1) → (1,2),宝藏数 1 → 4(严格递增),和为 1+4=51+4=5(到达最右列停止);
    • 向下移动:路径为 (1,1) → (2,1),宝藏数 1 → 2(严格递增),和为 1+2=31+2=3(到达最下行停止)。
  2. 起点 (1,2)(第 1 行第 2 列)

    • 向右移动:已在最右列,无法移动,仅取 (1,2) 的宝藏,和为 4;
    • 向下移动:路径为 (1,2) → (2,2),宝藏数 4 → 3(非递增),仅取 (1,2) 的宝藏,和为 4。
  3. 起点 (2,1)(第 2 行第 1 列)

    • 向下移动:已在最下行,无法移动,仅取 (2,1) 的宝藏,和为 2;
    • 向右移动:路径为 (2,1) → (2,2),宝藏数 2 → 3(严格递增),和为 2+3=52+3=5(到达最右列停止)。
  4. 起点 (2,2)(第 2 行第 2 列)

    • 无法向右或向下移动,仅取 (2,2) 的宝藏,和为 3。

所有路径的宝藏和中,最大值为 5,因此输出 5。

数据范围与提示

  • 对于 60% 的数据:1n,m1001 \leq n, m \leq 1001aij1071 \leq a_{ij} \leq 10^7
  • 对于 100% 的数据:1n,m1031 \leq n, m \leq 10^31aij1091 \leq a_{ij} \leq 10^9