#L6904. 「THUPC 2024 初赛」机器人
「THUPC 2024 初赛」机器人
好的,我们先重新整理题面,并加上数学公式和格式。
题目描述
有 个机器人围成一圈,编号按照逆时针顺序分别为 。
每个机器人有两只手。编号为 的机器人初始「左手」指向编号 的机器人,「右手」指向编号 的机器人。
所有的机器人内部都写有 行「指令」,「指令」有以下这些形式:
「指令」分为「基础指令」和「高级指令」两种。
基础指令
- SLACKOFF:「摸鱼」,即什么也不做。
- MOVE h z:将第 只手向逆时针方向「移动」 个机器人的位置。当 时表示「左手」,当 时表示「右手」。
- SWAP h x y:将第 只手指向的机器人的第 行「指令」与自己的第 行「指令」「对调」。
- MIRROR h x:将第 只手指向的机器人的第 行「指令」「镜像」取反,即将「指令」中的 取反( 变成 , 变成 )。特殊地,它对 SLACKOFF 指令没有效果;而对 TRIGGER 指令,会直接修改「触发」时「执行」的「指令」中的 。
- REPLACE h x :将第 只手指向的机器人的第 行「指令」「替换」为 。其中 为一条完整的「指令」。
高级指令
-
ACTIVATE h:「激活」第 只手指向的机器人,即按顺序「执行」那个机器人的所有「指令」。前一行「指令」「执行」完毕之后才会「执行」后一行。注意在「执行」前面的「指令」时后面的「指令」可能会发生更改,这时需要「执行」更改后的「指令」。当那个机器人的所有「指令」「执行」完毕后,该「指令」才算「执行」完毕。
-
TRIGGER : :其中 表示「指令」的名称,即一条「指令」中的第一个全大写单词; 表示一条完整的「基础指令」。TRIGGER 指令不会被「执行」,即按顺序「执行」时会跳过该「指令」。但是,当一个其他机器人「执行」完一条「指令」之后,且「右手」指向自己的时候,自己最靠前的满足如下条件的 TRIGGER 指令(如果有)就会被「触发」——「执行」一次对应的 :
- 不为 TRIGGER 时,刚刚「执行」完毕的「指令」为 指令;
- 为 TRIGGER 时,刚刚「执行」完毕的「指令」是 TRIGGER 指令被「触发」时「执行」的「指令」。
「执行」完毕后会回到原来的「执行」顺序中。
你需要从 号机器人开始按照编号顺序一圈又一圈地「激活」这些机器人,并输出「执行」的前 条指令的有关信息。
输入格式
第一行三个正整数 。
接下来按照编号从小到大的顺序表示 个机器人的信息。
对于每个机器人:
- 第一行两个非负整数 表示「左手」指向的机器人编号和「右手」指向的机器人编号。
- 接下来 行,按顺序表示机器人的「指令」。
输出格式
输出 行,按顺序描述前 条开始「执行」的指令的相关信息,在开始「执行」前输出,每条一行,格式如下:
- SLACKOFF:
Robot <id> slacks off. - MOVE:
Robot <id> moves its <side> hand towards Robot <id2>. - SWAP:
Robot <id> swaps a line of command with Robot <id2>. - MIRROR:
Robot <id> modifies a line of command of Robot <id2>. - REPLACE:
Robot <id> replaces a line of command of Robot <id2>. - ACTIVATE:
Robot <id> activates Robot <id2>. - TRIGGER 被触发时:按对应的基础指令格式输出
样例 1
输入:
2 2 5
0 0
MOVE 1 1
MOVE 0 1
0 1
TRIGGER MOVE: MOVE 0 1
SLACKOFF
输出:
Robot 0 moves its right hand towards Robot 1.
Robot 1 moves its left hand towards Robot 1.
Robot 0 moves its left hand towards Robot 1.
Robot 1 moves its left hand towards Robot 0.
Robot 1 slacks off.
样例 2
输入:
2 2 4
0 1
ACTIVATE 1
SLACKOFF
0 1
SWAP 0 2 2
MIRROR 0 1
输出:
Robot 0 activates Robot 1.
Robot 1 swaps a line of command with Robot 0.
Robot 1 slacks off.
Robot 0 modifies a line of command of Robot 0.
样例 3
输入:
3 2 6
1 2
ACTIVATE 0
ACTIVATE 0
2 1
SWAP 0 2 2
TRIGGER ACTIVATE: REPLACE 0 2 SLACKOFF
0 1
TRIGGER MIRROR: SLACKOFF
SLACKOFF
输出:
Robot 0 activates Robot 1.
Robot 1 swaps a line of command with Robot 2.
Robot 1 slacks off.
Robot 2 replaces a line of command of Robot 0.
Robot 0 slacks off.
Robot 1 swaps a line of command with Robot 2.
样例 4
输入:
3 2 8
0 1
SLACKOFF
TRIGGER MOVE: SLACKOFF
1 2
TRIGGER TRIGGER: SLACKOFF
TRIGGER SLACKOFF: MOVE 0 1
2 0
TRIGGER SLACKOFF: MOVE 1 2
TRIGGER TRIGGER: MOVE 1 1
输出:
Robot 0 slacks off.
Robot 1 moves its left hand towards Robot 2.
Robot 2 moves its right hand towards Robot 1.
Robot 1 slacks off.
Robot 2 moves its right hand towards Robot 0.
Robot 0 slacks off.
Robot 1 slacks off.
Robot 2 moves its right hand towards Robot 2.
数据范围
- ,,
- ,,
- 输入文件长度不超过
- 保证能「执行」至少 条「指令」