QOJ.ac

QOJ

時間限制: 2 s - 4 s 記憶體限制: 1024 MB 總分: 25

#5855. Magicka

统计

简介

Magicka™ 是由 Arrowhead Game Studios 开发的一款动作冒险游戏。在 Magicka 中,你扮演一名巫师,通过调用并组合元素来创造魔法。本题的灵感来源于此,但并不要求你玩过 Magicka。

注意:“调用”(invoke)在此处是一个技术术语,你无需了解其常规英语含义。

题目描述

作为一名巫师,你可以调用八种“基础”元素。每个基础元素都是 {Q, W, E, R, A, S, D, F} 中的一个字符。当你调用一个元素时,它会被添加到你的元素列表末尾。例如:如果你调用 W,然后调用 A(我们简称为“调用 WA”),那么你的元素列表将变为 [W, A]。

我们将指定若干对基础元素,它们可以组合成非基础元素(其余 18 个大写字母)。例如,Q 和 F 可能组合成 T。如果一对元素中的两个出现在元素列表的末尾,那么这两个元素将立即被移除,并被它们组合成的元素所取代。在上述例子中,如果元素列表在任何时刻变为 [A, Q, F] 或 [A, F, Q],它将变为 [A, T]。

我们还将指定若干对对立的基础元素。在你调用一个元素后,如果它没有立即组合成另一个元素,且它与你元素列表中的任何元素对立,那么你的整个元素列表将被清空。

例如,假设 Q 和 F 组合成 T,且 R 和 F 对立。那么按顺序调用以下元素将产生如下结果:

  • QF → [T] (Q 和 F 组合成 T)
  • QEF → [Q, E, F] (Q 和 F 无法组合,因为它们在列表末尾时中间隔了 E)
  • RFE → [E] (F 和 R 对立,列表被清空;然后调用 E)
  • REF → [] (F 和 R 对立,列表被清空)
  • RQF → [R, T] (QF 组合成 T,因此列表未被清空)
  • RFQ → [Q] (F 和 R 对立,列表被清空)

给定一系列要调用的元素,请问最终的元素列表是什么?

输入格式

输入的第一行包含测试用例的数量 T。接下来是 T 个测试用例。每个测试用例由一行组成,包含以下以空格分隔的元素:

首先是一个整数 C,后跟 C 个字符串,每个字符串包含三个字符:两个基础元素后跟一个非基础元素。这表示这两个基础元素组合成该非基础元素。接下来是一个整数 D,后跟 D 个字符串,每个字符串包含两个字符:一对互相对立的基础元素。最后是一个整数 N,后跟一个包含 N 个字符的字符串:你要调用的基础元素序列。你将按照字符串中出现的顺序(从左到右),一次一个地调用它们。

输出格式

对于每个测试用例,输出一行 "Case #x: y",其中 x 是用例编号(从 1 开始),y 是格式为 "[e0, e1, ...]" 的列表,其中 ei 是最终元素列表中的第 i 个元素。请参考样例输出。

数据范围

$1 \le \mathbf{T} \le 100$。

每对基础元素最多只能出现在一个组合中,尽管它们可能既出现在组合中又互相对立。

没有任何基础元素与自身对立。

与电脑游戏 Magicka 不同,元素列表的长度没有限制。

内存限制:1GB。

小数据集(测试集 1 - 可见;10 分)

$0 \le \mathbf{C} \le 1$。

$0 \le \mathbf{D} \le 1$。

$1 \le \mathbf{N} \le 10$。

时间限制:2 秒。

大数据集(测试集 2 - 隐藏;15 分)

$0 \le \mathbf{C} \le 36$。

$0 \le \mathbf{D} \le 28$。

$1 \le \mathbf{N} \le 100$。

时间限制:4 秒。

样例

样例输入 1

5
0 0 2 EA
1 QRI 0 4 RRQR
1 QFT 1 QF 7 FAQFDFQ
1 EEZ 1 QE 7 QEEEERA
0 1 QW 2 QW

样例输出 1

Case #1: [E, A]
Case #2: [R, I, R]
Case #3: [F, D, T]
Case #4: [Z, E, R, A]
Case #5: []

Magicka™ 是 Paradox Interactive AB 的商标。Paradox Interactive AB 不认可且未参与 Google Code Jam。

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.