#L6567. 蓝宝石魔塔
蓝宝石魔塔
题目描述
你在玩一个奇怪的魔塔,这个魔塔的设定是这样的:
- 地图为一张 个点, 条边的简单无向连通图;
- 你初始在 号点,该位置为空地,而其它的点要么有一个蓝宝石,要么有一个怪物;
- 你初始具有 点攻击和 点防御,每个蓝宝石能够给你增加一定的防御;
- 当你与怪物接触时会发生战斗,若怪物具有 点生命、 点攻击和 点防御,则你在此次战斗中会受到 $\left(\lceil\frac{h}{A - d}\rceil - 1\right) \times (a - D)$ 点伤害。注意:这个公式与一般的魔塔有所不同,当 时该伤害应为负值而不是 ,相当于给你回复相应的生命值;
- 当一个非空地节点的蓝宝石被吃掉或怪物被打败时,该节点也会变成空地;
- 你可以沿着边在空地上任意穿梭,或从空地走向相连的蓝宝石节点或怪物节点并触发对应事件;
- 当所有节点都变为空地时,游戏结束。
现在,你拥有无限的生命值,他想知道游戏结束时受到的伤害总和的最小值。
输入格式
- 第一行:一个整数 ,表示测试点编号。特殊地,样例的测试点编号为 。
- 第二行:三个整数 、、,分别表示节点数目、初始攻击和初始防御。
- 接下来的 行,每行两个整数 和 ,表示 和 之间有一条无向边。保证给出的是一棵树。
- 接下来的 行,每行若干个整数,分别表示 号节点的类型。具体地:
- 第一个数 ,表示节点类型;
- 若 ,接下来输入一个整数 ,表示该点处有一个增加 防御的蓝宝石;
- 若 ,接下来输入三个整数 、、,表示该点处有一个 生命、 攻击、 防御的怪物。
输出格式
输出一行一个整数,表示最小伤害总和。
样例 1
输入
输出
说明
先吃掉 号点的宝石,此时状态 /;再打掉 号点的怪物,受到伤害 ;再吃掉 号点的宝石,此时状态 /;再打掉 号点的怪物,受到伤害 ;最后吃掉 号点的宝石,此时状态 /。
样例 2
输入
输出
说明
先吃掉 号点的宝石,此时状态 /;再打掉 号点的怪物,受到伤害 ;再吃掉 号点的宝石,此时状态 /;再打掉 号点的怪物,受到伤害 ;最后吃掉 号点的宝石,此时状态 /。
数据范围与提示
| 测试点编号 | 约定 | |
|---|---|---|
| - | ||
| 蓝宝石数目不超过 | ||
| - | 除 号点外其余点度数不超过 ,且蓝宝石仅出现在叶子节点 | |
| 除 号点外其余点度数不超过 | ||
| - | ||
对于 的数据,,,。