CF1874G Jellyfish and Inscryption
题目描述
水母喜欢玩一个叫做“Inscryption”的游戏,这个游戏在一个有向无环图上进行,图中有 $n$ 个顶点和 $m$ 条边。所有的边 $a \to b$ 都满足 $a < b$。
你需要沿着有向边从顶点 $1$ 移动到顶点 $n$,然后与最终 Boss 战斗。
在这个过程中,你会收集卡牌和道具。
每张卡牌有两个属性:生命值(HP)和伤害(damage)。如果一张卡牌的生命值为 $a$,伤害为 $b$,那么这张卡牌的能量为 $a \times b$。
每个道具只有一个属性:能量值(power)。
除了顶点 $1$ 和顶点 $n$,有一些顶点会触发特殊事件。特殊事件包括:
1. 你会获得一张生命值为 $a$,伤害为 $b$ 的卡牌。
2. 如果你至少有一张卡牌,选择你的一张卡牌并使其生命值增加 $x$。
3. 如果你至少有一张卡牌,选择你的一张卡牌并使其伤害增加 $y$。
4. 你会获得一个能量值为 $w$ 的道具。
当你到达顶点 $n$ 时,你可以选择至多一张你的卡牌,并将其伤害乘以 $10^9$。
最终 Boss 非常强大,因此你希望最大化你所有卡牌和道具的能量之和。请你求出如果你最优地进行游戏,所有卡牌和道具的能量之和的最大值。
输入格式
第一行包含两个整数 $n$ 和 $m$($2 \leq n \leq 200$,$n-1 \leq m \leq \min(\frac{n(n-1)}{2}, 2000)$)——顶点数和边数。
接下来的 $n$ 行中,第 $i$ 行($1 \leq i \leq n$)描述了在顶点 $i$ 触发的特殊事件:
- 0 —— 没有特殊事件。
- 1 a b($1 \leq a, b \leq 200$)——你会获得一张生命值为 $a$,伤害为 $b$ 的卡牌。
- 2 x($1 \leq x \leq 200$)——如果你至少有一张卡牌,选择你的一张卡牌并使其生命值增加 $x$。
- 3 y($1 \leq y \leq 200$)——如果你至少有一张卡牌,选择你的一张卡牌并使其伤害增加 $y$。
- 4 w($1 \leq w \leq 10^6$)——你会获得一个能量值为 $w$ 的道具。
接下来的 $m$ 行,每行包含两个整数 $u$ 和 $v$($1 \leq u < v \leq n$),表示一条从顶点 $u$ 到顶点 $v$ 的有向边。
保证每条边 $(u,v)$ 最多出现一次。
保证顶点 $1$ 和顶点 $n$ 没有特殊事件。
保证对于所有 $i$,存在一条从顶点 $1$ 到顶点 $n$ 的路径经过顶点 $i$。
输出格式
输出一个整数,表示你所有卡牌和道具的能量之和的最大值。
说明/提示
在第一个样例中,我们可以按如下顺序进行游戏:
- 从顶点 $1$ 移动到顶点 $2$,获得一张生命值为 $2$,伤害为 $10$ 的卡牌。
- 从顶点 $2$ 移动到顶点 $4$,选择在顶点 $2$ 获得的卡牌,并使其生命值增加 $8$。
- 从顶点 $4$ 移动到顶点 $6$,选择在顶点 $2$ 获得的卡牌,并将其伤害乘以 $10^9$。
最终,我们会有一张生命值为 $(2+8)=10$,伤害为 $10 \times 10^9=10^{10}$ 的卡牌,其能量为 $10 \times 10^{10}=10^{11}$。因为我们只有在顶点 $2$ 获得的这张卡牌,所以所有卡牌和道具的能量之和为 $10^{11}$。
由 ChatGPT 4.1 翻译