题意
有一张 $ n \times m $ 的网格图,每次可以从 $ (x_0, y_0) $ 跳到 $ (x_1, y_1) $ 当且仅当 $ x_0 < x_1 $ 且 $ y_0 < y_1 $ ,同时这两个点都要在同一个给出的矩形中,求最多可以经过多少个网格并求出方案数对 $ 10^9 + 7 $ 取模。
做法
由于要求的是最长路经,所以对于路径相邻的两个位置 $ (x_i, y_i) $ 和 $ (x_{i + 1}, y_{i + 1}) $ 满足 $ x_i + 1 = x_{i + 1} $ 或 $ y_i + 1 = y_{i + 1} $ 。
考虑DP,预处理出每个点可以从那些地方转移( $ Left[i][j] $ 和 $ Up[i][j] $ 分别维护这个点可以转移的最左和最上方的位置 )。
然后单调队列优化DP即可。
1 |
|