AT_abc369_f [ABC369F] Gather Coins

题目描述

有一个高 $H$ 行、宽 $W$ 列的网格。我们用 $(i,j)$ 表示从上往下第 $i$ 行、从左往右第 $j$ 列的格子。 在这个网格上有 $N$ 枚硬币,第 $i$ 枚硬币可以通过经过格子 $(R_i,C_i)$ 来捡到。 你的目标是从格子 $(1,1)$ 出发,每次只能向下或向右移动一格,尽可能多地捡到硬币,最终到达格子 $(H,W)$。 请你求出最多可以捡到多少枚硬币,并输出一种能够达到这个最大值的移动路径。

输入格式

输入通过标准输入给出,格式如下: > $H$ $W$ $N$ $R_1$ $C_1$ $R_2$ $C_2$ $\cdots$ $R_N$ $C_N$

输出格式

输出两行。第一行输出你最多可以捡到的硬币数量。第二行输出一种能够实现该最大值的移动路径,用一个长度为 $H+W-2$ 的字符串表示。第 $i$ 个字符表示第 $i$ 次移动,若向下移动则为 `D`,若向右移动则为 `R`。 如果存在多条能够捡到最多硬币的路径,输出其中任意一条均可。

说明/提示

### 限制条件 - $2\leq H,W \leq 2\times 10^5$ - $1\leq N \leq \min(HW-2, 2\times 10^5)$ - $1\leq R_i \leq H$ - $1\leq C_i \leq W$ - $(R_i,C_i)\neq (1,1)$ - $(R_i,C_i)\neq (H,W)$ - 所有 $(R_i,C_i)$ 互不相同 - 输入均为整数 ### 样例解释 1 ![](https://img.atcoder.jp/abc369/8c45374379376c75b6cfd44cb8efeaf8.png) 如上图所示,按照 $(1,1)\rightarrow (2,1)\rightarrow (2,2)\rightarrow (2,3)\rightarrow (3,3)\rightarrow (3,4)$ 的路径移动,可以捡到 $(2,1)$、$(2,3)$、$(3,3)$ 这三个格子的硬币。 ### 样例解释 2 `RD` 这样的移动路径也是正确答案。 由 ChatGPT 4.1 翻译