QOJ.ac

QOJ

Time Limit: 2 s Memory Limit: 512 MB Total points: 100

#13106. 头奖

Statistics

Johnny 在 Las Figas 度假。他决定去最近开业的 Lohal 赌场。Lohal 为游客提供了一种名为“黑或白”(Black or White)的新游戏。这是一个单人游戏,过程如下:

有 $m$ 个代币排成一行。玩家会被依次提供这些代币。每个代币要么是白色、黑色,要么是钻石。为了获得一个代币,玩家需要购买一张卡片。目前有几种类型的卡片可供选择。

第 $i$ 种类型的卡片上写有两个数字:$w_i$ 和 $b_i$,共有 $c_i$ 张这种卡片。购买第 $i$ 种类型的卡片,玩家必须支付 $w_i + b_i$ 美元,但如果他已经拥有一些代币,则可以获得折扣。

具体来说,如果玩家拥有 $a$ 个白色代币,他可以将卡片上的数字 $w_i$ 减少最多 $a$(但不能使其变为负数)。同样,如果玩家拥有 $b$ 个黑色代币,他可以将数字 $b_i$ 减少最多 $b$(同样不能使其变为负数)。最后,对于每个钻石代币,玩家可以选择将 $w_i$ 或 $b_i$ 中的任意一个减少 1。

例如,如果玩家拥有 2 个白色、1 个黑色和 1 个钻石代币,他可以用 1 美元购买 $w_i = 4, b_i = 0$ 的卡片:2 个白色代币将 $w_i$ 减至 2,使用钻石代币可以将 $w_i$ 进一步减至 1。黑色代币对这张卡片无用,因此现在的成本为 $1 + 0 = 1$。同样的代币组合也可以免费获得 $w_i = 2, b_i = 2$ 的卡片(此时使用钻石代币来减少 $b_i$)。

注意,购买卡片不需要玩家丢弃代币,它们会保留在玩家手中,稍后可以再次用于购买其他卡片。

玩家可以选择获取哪些代币,但为了赢得大奖,他需要获得所有代币。Johnny 想要赢得大奖,所以他决定获得所有代币。请帮助他选择购买哪些卡片来获取代币,使得他赢得大奖所花费的总金额最小。

输入格式

输入文件包含多个测试用例。

每个测试用例以一个整数 $m$ 开始,表示代币数量($1 \le m \le 300$)。下一行包含 $m$ 个字符,每个字符要么是表示白色代币的 ‘W’,要么是表示黑色代币的 ‘B’,或者是表示钻石代币的 ‘*’。该行按代币提供给玩家的顺序排列。

接下来一行包含 $n$,表示卡片类型的数量($1 \le n \le 300$)。接下来的 $n$ 行每行包含三个整数:对于每种卡片类型,分别指定 $w_i, b_i$ 和 $c_i$($0 \le w_i, b_i \le 1000, 1 \le c_i \le 300$)。所有 $c_i$ 的总和至少为 $m$。

最后一个测试用例后跟一行包含 0 的内容,该行不应被处理。

单个输入文件中所有测试用例的 $m$ 之和不超过 300。单个输入文件中所有测试用例的 $n$ 之和不超过 300。

输出格式

对于每个测试用例,输出一个整数:Johnny 赢得大奖所需花费的最小总金额。

样例

样例输入 1

5
WWB*W
3
0 1 1
1 0 1
1 2 3
0

样例输出 1

4

说明

样例中的最优策略如下:

代币 卡片类型 玩家持有 成本
W 1 $0 + 1 = 1$
W 2 W $(1 - 1) + 0 = 0$
B 3 WW $(1 - 1) + 2 = 2$
* 3 WWB $(1 - 1) + (2 - 1) = 1$
W 3 WWB* $(1 - 1) + (2 - 2) = 0$ (使用钻石减少 $b_3$)

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.