#P13367. [GCJ 2011 #1A] Pseudominion

    ID: 13178 远端评测题 6000~12000ms 1024MiB 尝试: 0 已通过: 0 难度: 8 上传者: 标签>动态规划 DP2011Google Code Jam

[GCJ 2011 #1A] Pseudominion

Description

你正在玩一款使用特殊卡牌的游戏。每张卡牌都有三个奖励数值:卡牌奖励 cc,得分奖励 ss,回合奖励 tt。有些卡牌一开始就在你手中,其余的卡牌则在桌上的牌堆中。你从 11 个回合开始。

在每个回合中,你可以从手牌中选择任意一张卡牌并打出。如果这张卡牌的奖励数值为 ccsstt,则会发生以下事件:

  • 这张卡牌会从你的手牌中移除,且之后不能再使用。
  • 你从牌堆顶依次抽取 cc 张卡牌加入手牌。如果牌堆中剩余的卡牌数少于 cc,则全部抽取。
  • 你的总得分增加 ss
  • 你的剩余回合数增加 tt

如果在某个回合开始时你手中没有任何卡牌,则该回合不会发生任何事情。你的目标是在回合数耗尽之前获得尽可能高的分数。

例如,假设你的手牌和牌堆包含如下卡牌:

         +---+---+---+            +---+---+---+
   HAND: | c | s | t |      DECK: | c | s | t |
         +---+---+---+            +---+---+---+
Card #1: | 0 | 0 | 2 |   Card #4: | 1 | 1 | 0 |
Card #2: | 0 | 5 | 0 |   Card #5: | 0 | 1 | 1 |
Card #3: | 2 | 1 | 1 |   Card #6: | 2 | 2 | 0 |
         +---+---+---+            +---+---+---+

下表展示了你如何通过这些卡牌获得 88 分的得分。前三列分别表示你打牌前的手牌、剩余回合数和得分,最后一列表示你选择打出的卡牌编号。

+---------+------------+-------+------+
| Hand    | Turns left | Score | Play |
+---------+------------+-------+------+
| 1, 2, 3 |      1     |   0   |   1  |
| 2, 3    |      2     |   0   |   3  |
| 2, 4, 5 |      2     |   1   |   2  |
| 4, 5    |      1     |   6   |   5  |
| 4       |      1     |   7   |   4  |
| 6       |      0     |   8   |   -  |
+---------+------------+-------+------+

可以看到,卡牌奖励和回合奖励可以让你连续打出多张卡牌,直到无法继续为止。

Input Format

第一行输入一个整数 TT,表示测试用例的数量。接下来有 TT 组测试用例。

每组测试用例的第一行包含一个整数 NN,表示你手中的卡牌数量。接下来的 NN 行,每行包含三个整数 ccsstt,分别表示一张手牌的奖励数值。

然后输入一行,包含一个整数 MM,表示牌堆中的卡牌数量。接下来的 MM 行,每行包含三个整数 ccsstt,分别表示一张牌堆卡牌的奖励数值。这些卡牌的顺序即为你抽取它们的顺序。

Output Format

对于每个测试用例,输出一行,格式为 “Case #x: SS”,其中 xx 表示测试用例编号(从 11 开始),SS 表示在回合数耗尽前你能获得的最大得分。

2
4
1 0 0
1 1 1
0 5 0
1 2 0
0
2
1 1 1
0 6 0
1
0 1 3
Case #1: 6
Case #2: 8

Hint

数据范围

  • 1T1001 \leq T \leq 100
  • 1N1 \leq N
  • 0M0 \leq M
  • N+M80N + M \leq 80

小数据(15 分,测试点 1 - 可见)

  • 0c10 \leq c \leq 1
  • 0s200 \leq s \leq 20
  • 0t200 \leq t \leq 20
  • 时间限制:30 6 秒。

大数据(35 分,测试点 2 - 隐藏)

  • 0c20 \leq c \leq 2
  • 0s500 \leq s \leq 50
  • 0t500 \leq t \leq 50
  • 时间限制:60 12 秒。

由 ChatGPT 4.1 翻译