CF321B Ciel and Duel
题目描述
狐狸 Ciel 正在和她的朋友 Jiro 玩一款卡牌游戏。
Jiro 有 $n$ 张卡牌,每张卡牌有两个属性:$position$(攻击或防御)和 $strength$。狐狸 Ciel 有 $m$ 张卡牌,每张卡牌同样拥有这两个属性。已知 Ciel 的所有卡牌均为攻击型。
现在轮到 Ciel 进行战斗阶段,她可以进行以下操作多次:
1. 选择她的一张卡牌 $X$。这张卡牌之前不能被选择过。
2. 如果此时 Jiro 没有存活的卡牌,Jiro 会受到 $(X$ 的 $strength)$ 的伤害。否则,Ciel 需要选择 Jiro 的一张存活卡牌 $Y$,然后:
- 如果 $Y$ 的位置是攻击型,则必须有 $X$ 的 $strength \geq Y$ 的 $strength$。此攻击后,卡牌 $Y$ 死亡,Jiro 承受的伤害为 $(X$ 的 $strength) - (Y$ 的 $strength)$。
- 如果 $Y$ 的位置是防御型,则必须有 $X$ 的 $strength>Y$ 的 $strength$。此攻击后,卡牌 $Y$ 死亡,但 Jiro 不会受到伤害。
Ciel 可以在任意时刻结束她的战斗阶段(因此,她可以选择部分卡牌出战)。帮助狐狸计算 Jiro 能够受到的最大伤害和。
输入格式
第一行包含两个整数 $n$ 和 $m$($1 \leq n,m \leq 100$),分别表示 Jiro 和 Ciel 持有的卡牌数量。
接下来的 $n$ 行,每行包含一个字符串 $position$ 和一个整数 $strength$($0 \leq strength \leq 8000$),表示 Jiro 当前卡牌的位置(位置,“ATK” 表示攻击型,“DEF” 表示防御型)和该卡牌的强度。
接下来的 $m$ 行,每行包含一个整数 $strength$($0 \leq strength \leq 8000$),表示 Ciel 当前卡牌的强度。
输出格式
输出一个整数,表示 Jiro 能够被造成的最大伤害总和。
说明/提示
在第一个样例中,Ciel 有 $3$ 张同样 $strength$ 的卡牌。最优策略如下:先用其中一张攻击“ATK 2000”卡牌,销毁该卡牌并造成 $2500-2000=500$ 的伤害。然后用第二张卡牌销毁“DEF 1700”卡牌,此时不会造成伤害。现在 Jiro 没有卡牌存活,Ciel 用第三张卡牌出战,造成 $2500$ 点伤害。因此答案为 $500+2500=3000$。
在第二个样例中,她应当用 $1001$ 卡牌攻击“ATK 100”卡,然后用 $101$ 卡牌攻击“ATK 10”卡。剩下卡牌可以选择不再出战,停止战斗阶段。总伤害为 $(1001-100)+(101-10)=992$。
在第三个样例中,需要注意她可以用强度为 $0$ 的卡牌销毁“ATK 0”卡牌,但不能用该卡牌销毁“DEF 0”卡牌。
由 ChatGPT 5 翻译