#P10010. 亡语

亡语

亡语

Problem Description

你在玩一款在线卡牌游戏《炉石传说》。 你有 nn 个随从,随从死亡当且仅当其生命值小于等于 00。一个随从死亡后,将会触发亡语。随从分为三类,每类随从具有不同的 存活效果亡语效果

  • 存活效果:随从存活时产生的效果,死亡但未结算亡语的随从不具有 存活效果
  • 亡语效果:一个随从 首次 生命值降到小于等于 00 时触发的效果 | 类型 | 初始信息 | 存活效果 | 亡语效果 | | :-------------------------: | :----------------------------: | :--------------------------------: | :------------------------------: | | 1 | hh - 初始生命值 | 无 | 对所有随从造成 1 点伤害 | | 2 | hh - 初始生命值
    xx - 初始等级
    kk - 亡语召唤数量 | 无 | 召唤 kk 个 [ 编号继承此随从 ,
    初始生命值为此随从初始生命值 2 倍 ,
    初始等级为 x1x-1 ,
    亡语召唤数量为 kk ] 的第二类随从
    (也具有第二类随从的亡语效果)。
    特别地,等级 0 的随从死亡时不会召唤新的随从。 | | 3 | hh - 初始生命值 | 所有随从受到的伤害增加一倍。
    假设当前有 mm 个第三类随从存活,
    那么所有随从(包括本身)受到的伤害
    会变为 m+1m+1 倍。 | 无 | 假设触发亡语的顺序依次为 亡语 11,亡语 22,那么因为亡语 1122 死亡的随从,其亡语触发顺序遵循如下规则:
  • 因亡语 11 死亡的随从,其亡语结算在 因亡语 22 死亡的随从 之前;(可以理解为 BFS)
  • 因同一个亡语死亡的随从,优先结算编号较小的随从的亡语 给定 nn 个随从的初始信息,请你求出当第一个随从死亡(强制死亡)并依次结算所有亡语后,所有随从的状态,具体见输出格式。

Input

输入包含多组测试数据: 输入的第一行包含一个整数 TT (1T10)1\le T\le 10),表示测试数据的组数。 对于每组测试数据: 第一行包含一个整数 nn (1n1051\le n\le 10^5),表示随从个数。 接下来 nn 行,描述 nn 个随从,第 ii 个随从为三种类型中的一种:

  • $1 \ h_i$ (1hi1091\le h_i\le 10^9),表示第 ii 个随从属于第一类,初始生命值为 hih_i
  • $2\ h_i \ x_i \ k_i$ ($1\le h_i \le 10^9, 0\le x_i\le 10^5, 1\le k_i\le 10$),表示第 ii 个随从属于第二类,初始生命值为 hih_i,等级为 xix_i,亡语召唤数量为 kik_i
  • $3 \ h_i$ (1hi1091\le h_i\le 10^9),表示第 ii 个随从属于第三类,初始生命值为 hih_i

Output

对于每组测试数据: 输出 nn 行,第 ii 行表示第 ii 个随从的状态: 若为第一类随从,输出一个整数 hih_i 表示它的剩余生命值( hi=0h_i=0 表示其死亡)。 若为第二类随从,输出三个整数 mi,xi,him_i,x_i,h_i

  • 若第 ii 个随从未死亡,则 hih_i 等于其剩余生命值,mi=1m_i = 1xix_i 等于其初始等级;
  • 若第 ii 个随从已死亡,则 mi,xi,him_i,x_i,h_i 表示其衍生随从的状态:mim_i 个等级为 xix_i,剩余生命值为 hih_i 的随从;
  • 特殊地,若第二类随从及其衍生的随从均死亡,mi=0m_i = 0xi=0x_i = 0hi=0h_i = 0 。 若为第三类随从,输出一个整数 hih_i 表示它的剩余生命值( hi=0h_i=0 表示其死亡)。

Sample Input

3
3
1 1
2 1 2 2
3 7
5
1 1
2 1 2 3
1 1
2 1 2 3
3 7
5
1 1
2 1 2 3
1 1
2 1 2 3
3 1

Sample Output

0
2 1 2
5
0
9 0 4
0
3 1 2
3
0
3 1 1
0
3 1 2
0

Hint

对于第二组样例,完整过程如下:

  • 随从 11 死亡,由于随从 55 未死亡,所以对所有随从造成 22 点伤害,随从 2,3,42,3,4 死亡;
  • 随从 22 亡语结算,召唤三个等级为 11,血量为 22 的随从;
  • 随从 33 亡语结算,由于随从 55 未死亡,所以对所有随从造成 22 点伤害,新随从 22 死亡;
  • 随从 44 亡语结算,召唤三个等级为 11,血量为 22 的随从;
  • 新随从 22 亡语结算,召唤九个等级为 00,血量为 44 的随从。
    对于第三组样例,完整过程如下:
  • 随从 11 死亡,由于随从 55 未死亡,所以对所有随从造成 22 点伤害,随从 2,3,42,3,4 死亡;
  • 随从 22 亡语结算,召唤三个等级为 11,血量为 22 的随从;
  • 随从 33 亡语结算,由于随从 55 死亡,所以对所有随从造成 11 点伤害;
  • 随从 44 亡语结算,召唤三个等级为 11,血量为 22 的随从。

Source

2024“钉耙编程”中国大学生算法设计超级联赛(9)