luogu#P5506. 封锁

封锁

题目背景

Steve 带领队伍准备去 M 星消灭黑暗势力,即将降落时被 M 星上空的无人机拦截了。

题目描述

为了突破封锁,成功降落, Steve 使用了电磁干扰仪,使无人机开始自相残杀。

然而,情况很快就变得混乱,无法了解当前的情况。

幸好 Steve 的部队已经记录了开始混战前的状况,并设法获得了无人机执行操作的顺序。

每架无人机有 55 项属性 atk,def,mat,mdf,fixatk,def,mat,mdf,fix ,当前生命值 hphp ,当前坐标 (x,y,z)(x,y,z) ,当前水平朝向 ff( 范围 0-7) 和竖直朝向 hh( 范围 0-4) 。

每一时刻,所有存活的无人机会向正前方移动一格。

随后,存活的无人机会按编号从小到大依次执行下列操作之一:

无操作 (N)

上下转向 (U/D) :改变 hh 的值,上为增加,下为减少,如果超过了范围就是无效操作,忽略。

左右转向 (L/R) :改变 ff 的值,左为增加,右为减少,循环(分别对应从上面看的逆时针,顺时针)。

例如:当 h=4h=4 时操作 U 无效,当 f=0f=0 时操作 R 会使 ff 变为 77

修复 (F) :使 hphp 增加 fixfix 点。

子弹 (A) :使位于这架无人机正前方最近的飞机受到伤害,伤害的值为当前飞机的 atkatk 值与目标的 defdef 值之差(差为负则不会造成伤害),如果多架飞机处于同一位置,那么只有编号最小的飞机会受到伤害

激光 (M) :使位于这架无人机正前方的所有飞机受到伤害,伤害的值为当前飞机的 matmat 值与目标的 mdfmdf 值之差(差为负则不会造成伤害)。

注意:与开火飞机重叠的飞机不会受到伤害

如果受到伤害后, hp0hp\leq 0 ,那么这架飞机就会坠毁。

对于 ffhh ,它的“正前方”是这样定义的:

首先,根据 ff 确定 x,yx,y 方向,如下图。

随后,根据 hh 进一步确定方向。

对于 h=0h=0h=4h=4 ,正前方是正下或正上( x,yx,y 不变, zz 变化)。

对于 h=1h=1h=3h=3 ,在上面方向的基础上再向下/上移动一格。

对于 h=2h=2 ,正前方为水平方向( x,yx,y 如上所述, zz 不变)。

(有人反馈看不懂方向,这里直接给出 f,hf,h 和正前方 (x,y,z)(x,y,z) 的对应表)

现在, Steve 告诉你了所有飞机初始的状态和之后执行的操作。

你需要告诉他,经过 tt 个时刻的混战之后,每架飞机的位置和生命值。

输入格式

第一行两个整数 n,tn,t ,表示飞机数和时刻数。

接下来 nn 行,每行 1111 个整数和一个长为 tt 字符串,按编号顺序描述无人机。

1111 个整数分别为 x,y,z,h,f,atk,def,mat,mdf,hp,fixx,y,z,h,f,atk,def,mat,mdf,hp,fix ,其中 hphp 为初始生命值。

字符串的每一个字符均为大写字母,依次表示这 tt 个时刻的操作。

输出格式

nn 行,每行 44 个整数 x,y,z,hpx,y,z,hp

如果这架飞机没有坠毁,则输出坐标和最终的生命值。

否则,输出坠毁前的坐标, hphp 输出 00

4 7
-1 -1 0 2 1 1 0 0 0 5 0 RAAAAAA
51 0 1 1 4 0 0 1 0 5 0 UMMMMMM
-2 0 0 2 0 0 0 0 0 5 1 FFFNNNN
53 0 0 2 4 0 0 0 0 5 1 FFFNNNN

6 0 0 1
45 0 0 0
5 0 0 4
46 0 0 7

7 1
0 0 0 0 0 2 0 0 0 1 0 A
1 0 0 0 0 4 0 0 0 3 0 A
1 0 0 0 0 1 1 1 1 4 0 N
1 0 -1 0 0 0 0 0 0 2 0 N
0 1 0 0 0 0 0 3 0 3 0 M
0 1 -1 0 0 0 0 0 1 3 0 N
0 1 -1 0 0 0 0 0 2 3 0 N
0 0 -1 1
1 0 -1 3
1 0 -1 4
1 0 -2 2
0 1 -1 3
0 1 -2 1
0 1 -2 2

提示

两架飞机移动并改变朝向后互相面对,随后它们分别向对面疯狂开火,最终 1 号飞机率先击落 2 号飞机,因为 2 号飞机已经坠毁,所以 1 号飞机不会被击落。

而它们身后分别跟着两架飞机, 2 号飞机使用激光,所以 3 号飞机也会受到伤害, 1 号飞机使用子弹,所以 4 号飞机不会受到伤害,直到 2 号飞机坠毁后, 1 号飞机发出最后一颗子弹,对 4 号飞机造成了一点伤害。同时两架飞机前三次操作分别进行了三次修复, hphp 增加了 33

测试时,每个 Subtask 包括 3 个测试点,全部通过才能得到该 Subtask 的分数


样例 2 解释:https://www.luogu.com.cn/discuss/582252


数据范围:

1n,t1001\leq n,t\leq 100

输入的所有数字大小在合理范围内,且绝对值均不大于 100100

其中 atk,def,mat,mdf,fixatk,def,mat,mdf,fix 为非负整数。

hphp 为正整数。

x,y,zx,y,z 为整数。

hh0,1,2,3,40,1,2,3,4 中的一个。

ff0,1,2,3,4,5,6,70,1,2,3,4,5,6,7 中的一个。

字符串仅包含 NFLRUDAMNFLRUDAM 88 种字符。

另外,对于前 3 个 subtask ,保证任何时刻飞机的 z 坐标为 00

Subtask 分值 出现的操作
1 12 N
2 14 NF
3 15 NFLR
4 17 NFLRUD
5 19 NFLRUDM
6 23 NFLRUDMA