#12050. Robot Instructions / 机器人的指令

Robot Instructions / 机器人的指令

Problem J46: Robot Instructions / 机器人的指令

版权信息: JLOJ2361 · 指令解析与模拟执行问题


任务总览

任务名称 时间限制 内存限制 分数
机器人的指令 1 sec 1024 MB 10 points

题目描述

在数轴原点上有一个机器人,它将依次执行一系列指令。你的任务是预测:​** 在执行完全部指令后,机器人所在的位置** ​。

机器人支持以下三类指令:

  • LEFT:向左移动一个单位;
  • RIGHT:向右移动一个单位;
  • SAME AS i:重复执行第 ii 条指令的动作(ii 为之前执行过的某一条指令编号)。

执行完每组指令后,机器人应复位回数轴原点,再开始处理下一组数据。


输入格式

*第一行:整数 TT1T1001 \leq T \leq 100),表示数据组数;

  • 每组数据:
  • 第一行:整数 nn1n1001 \leq n \leq 100),表示指令条数;
  • 接下来 nn 行:每行一个指令(格式为 LEFTRIGHTSAME AS i)。

输出格式

对于每组数据,输出一行整数,表示机器人执行完该组所有指令后的最终位置。


输入输出样例

输入示例

2
3
LEFT
RIGHT
SAME AS 2
5
LEFT
SAME AS 1
SAME AS 2
SAME AS 1
SAME AS 4

输出示例

1
- 5

题目分析与解法

✅ 模拟思路:

  • 使用数组 op[i] 记录第 ii 条指令的实际动作( - 1 表示左移, + 1 表示右移);
  • 遇到 SAME AS x 时,将当前指令的实际动作设为 op[x]
  • 依次累加所有指令的动作值,得到机器人当前位置。

🚶‍♂️ 示例说明:

  • 第一组指令:
  • 指令1:LEFT → 位置 - 1;
  • 指令2:RIGHT → 位置 0;
  • 指令3:SAME AS 2 → 再次 RIGHT → 最终位置为 1;
  • 第二组指令:
  • 多次引用 SAME AS i
  • 实际动作为 5 次 LEFT,总位移为 - 5。

边界细节说明

*指令中引用的编号 i 总是合法,即 1i<当前编号1 \leq i < 当前编号

  • 每组测试之间机器人自动复位为 0
  • 最大支持 T=100T = 100 组、每组 n=100n = 100 条指令,适合直接模拟。

时间复杂度分析

操作 复杂度
每组指令解析 O(n)O(n)
总体模拟 O(Tn)O(T \cdot n),最多 10410^4