#P10010. 亡语
亡语
亡语
Problem Description
你在玩一款在线卡牌游戏《炉石传说》。 你有 个随从,随从死亡当且仅当其生命值小于等于 。一个随从死亡后,将会触发亡语。随从分为三类,每类随从具有不同的 存活效果 与 亡语效果:
- 存活效果:随从存活时产生的效果,死亡但未结算亡语的随从不具有 存活效果
- 亡语效果:一个随从 首次 生命值降到小于等于 时触发的效果
| 类型 | 初始信息 | 存活效果 | 亡语效果 |
| :-------------------------: | :----------------------------: | :--------------------------------: | :------------------------------: |
| 1 | - 初始生命值 | 无 | 对所有随从造成 1 点伤害 |
| 2 | - 初始生命值
- 初始等级
- 亡语召唤数量 | 无 | 召唤 个 [ 编号继承此随从 ,
初始生命值为此随从初始生命值 2 倍 ,
初始等级为 ,
亡语召唤数量为 ] 的第二类随从
(也具有第二类随从的亡语效果)。
特别地,等级 0 的随从死亡时不会召唤新的随从。 | | 3 | - 初始生命值 | 所有随从受到的伤害增加一倍。
假设当前有 个第三类随从存活,
那么所有随从(包括本身)受到的伤害
会变为 倍。 | 无 | 假设触发亡语的顺序依次为 亡语 ,亡语 ,那么因为亡语 或 死亡的随从,其亡语触发顺序遵循如下规则: - 因亡语 死亡的随从,其亡语结算在 因亡语 死亡的随从 之前;(可以理解为 BFS)
- 因同一个亡语死亡的随从,优先结算编号较小的随从的亡语 给定 个随从的初始信息,请你求出当第一个随从死亡(强制死亡)并依次结算所有亡语后,所有随从的状态,具体见输出格式。
Input
输入包含多组测试数据: 输入的第一行包含一个整数 (,表示测试数据的组数。 对于每组测试数据: 第一行包含一个整数 (),表示随从个数。 接下来 行,描述 个随从,第 个随从为三种类型中的一种:
$1 \ h_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$),表示第 个随从属于第二类,初始生命值为 ,等级为 ,亡语召唤数量为$3 \ h_i$
(),表示第 个随从属于第三类,初始生命值为
Output
对于每组测试数据: 输出 行,第 行表示第 个随从的状态: 若为第一类随从,输出一个整数 表示它的剩余生命值( 表示其死亡)。 若为第二类随从,输出三个整数 :
- 若第 个随从未死亡,则 等于其剩余生命值,, 等于其初始等级;
- 若第 个随从已死亡,则 表示其衍生随从的状态: 个等级为 ,剩余生命值为 的随从;
- 特殊地,若第二类随从及其衍生的随从均死亡,,, 。 若为第三类随从,输出一个整数 表示它的剩余生命值( 表示其死亡)。
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
对于第二组样例,完整过程如下:
- 随从 死亡,由于随从 未死亡,所以对所有随从造成 点伤害,随从 死亡;
- 随从 亡语结算,召唤三个等级为 ,血量为 的随从;
- 随从 亡语结算,由于随从 未死亡,所以对所有随从造成 点伤害,新随从 死亡;
- 随从 亡语结算,召唤三个等级为 ,血量为 的随从;
- 新随从 亡语结算,召唤九个等级为 ,血量为 的随从。
对于第三组样例,完整过程如下: - 随从 死亡,由于随从 未死亡,所以对所有随从造成 点伤害,随从 死亡;
- 随从 亡语结算,召唤三个等级为 ,血量为 的随从;
- 随从 亡语结算,由于随从 死亡,所以对所有随从造成 点伤害;
- 随从 亡语结算,召唤三个等级为 ,血量为 的随从。
Source
2024“钉耙编程”中国大学生算法设计超级联赛(9)