ABC183E 棋盘 DP

AT 好像有很多棋盘 dfs / dp 题目。

可以分别 dp 统计向下、向右及右下的方案数。明显的,来到 \((i, j)\) 的方案数应该是其左、上、左上三个方向的方案数总和。则分别存储 \(p_{i, j}, q_{i, j}, r_{i, j}\)\((i, j)\) 上一步为左、上、左上的格子移动的方案数即可。

要注意,可以移动多格。转移方程如下(当 \((i, j)\) 非障碍物):

\[\begin{cases} f_{i, j} \gets p_{i - 1, j} + q_{i, j - 1} + r_{i - 1, j - 1} \\ p_{i, j} \gets p_{i - 1, j} + f_{i, j} \\ q_{i, j} \gets q_{i, j - 1} + f_{i, j} \\ r_{i, j} \gets r_{i - 1, j - 1} + f_{i, j} \end{cases} \]

不要忘记初始化,\(f_{1, 1}\) 要额外加上 \(1\)

具体实现参考 代码

posted @ 2023-12-25 19:01  Carrot-Meow~  阅读(12)  评论(0)    收藏  举报