#G0135. 收集金币【2026期末考试T4】
收集金币【2026期末考试T4】
题目描述
好消息,江桥不想收集钻石了。
坏消息,江桥开始收集金币了。
有一个 的网格地图( 行 列),其中 表示从上往下第 行,从左往右第 列的单元格。每个单元格中均有一个字符 。江桥将会控制机器人来拾取金币。具体规则如下:
如果 是 #,那么 单元格是无法通过的,此处是障碍物;
如果 是 .,那么该单元格是可以通过的,此处是空地;
如果 是 @,那么该单元格是可以通过的,此处有一个金币(拾取后就会变成空地)。
如果 是 R,那么该单元格是可以通过的,此处是机器人的初始位置(机器人离开后就变成空地)。
接下来江桥将会发出 条指令,指令格式为 。其中 为 U,D,L,R 其中之一,分别表示机器人往上/下/左/右移动,即,假设机器人当前位于 :
如果 U 且 单元格可以通过,则移动到 单元格。
如果 D 且 单元格可以通过,则移动到 单元格。
如果 L 且 单元格可以通过,则移动到 单元格。
如果 R 且 单元格可以通过,则移动到 单元格。
否则,停留在 格。
机器人会按此规则移动 次。并且,如果 ,则表示移动过程中不收集单元格中的金币,如果 则表示移动过程中收集单元格中的金币。如果江桥选择收集,那么机器人移动前所在单元格和移动完成后所在单元格的金币都会被收集。
注意,如果某次移动的目标位置超出了地图边界,或者移动的目标位置是障碍物,机器人都会保持原地不动。
例如,江桥发出的指令为 ,假设机器人当前位于 ,机器人首先会捡起当前格子的金币(如果存在的话),然后检查 是否可通过,是则移动过去并捡起金币(如果有的话),否则站在原地不动。如果可以移动到 ,就再检查 是否可通过,是则移动过去并捡起金币(如果有的话),否则站在原地不动。如果还可以移动到 ,就再检查 是否可通过,是则移动过去并捡起金币(如果有的话),否则站在原地不动。如此,机器人最多会走 步。
请问机器人最终停留的位置,以及机器人捡到金币的数量。
输入格式
第一行两个正整数 ,表示地图的行数和列数、指令数量。
接下来 行,每行一个长度为 的字符串 ,表示地图的第 行。
接下来 行,每行一个指令,格式为 。
输出格式
输出三个整数 ,分别表示机器人最终位置的单元格坐标、 机器人捡到金币的数量。
5 5 6
#@.#@
...R#
.#@..
@..@.
#@@@.
2 L 1
1 D 10
2 L 3
2 R 5
1 U 3
2 L 2
3 3 4
样例解释

机器人初始位于 ,行动如下:
2 L 1,机器人从 移动到 。没有捡到金币。1 D 10,机器人从 移动到 。移动 次就停止了,因为无法再往下移动了。2 L 3,机器人从 移动到 。移动 次就停止了,因为 是障碍物无法通过,所以停留在 。捡到 上的 枚金币。2 R 5,机器人从 移动到了 。移动 次就停止了,因为无法再往右移动了。捡到 上的 枚金币( 上的金币已经被捡起)。1 U 3,机器人从 移动到了 。移动 次就停止了,因为 是障碍物无法通过,所以停留在 。2 L 2,因此机器人从 移动到 。捡到 上的 枚金币。
机器人在移动过程中捡到金币的数量为 。
数据规模与约定
下发文件对应子任务 。
有合理的子任务依赖。
| 子任务编号 | 特殊性质 | 分值 | |
|---|---|---|---|
对于 的数据:保证 $1 \leq n,m,n\times m \leq 2 \times 10^6,1 \leq q \leq 10^5,|s_i| = m,s_{i,j} \in \{.,\#,@,R\}$ 且 R 恰好有一个,$op \in \{1,2\},c \in \{U,D,L,R\},1 \leq k \leq 10^2$。