QOJ.ac

QOJ

時間限制: 1 s 記憶體限制: 1024 MB 總分: 100

#5346. 二叉树

统计

二叉树是一种树形数据结构,其中每个节点最多有两个子节点,通常被称为左子节点和右子节点。拥有子节点的节点被称为这些子节点的父节点。

指令字符串是由字母 L、R 和 U 组成的字符串。L 代表左(Left),R 代表右(Right),U 代表上(Up)。这些指令的含义很快就会明了。

有一天,我画了一棵无限大的二叉树。在这棵树中,每个节点都有两个子节点(左子节点和右子节点),且每个节点都有一个父节点。对于本题,我们认为根节点的父节点就是根节点本身。我将笔放在根节点上,并按照指令字符串 $S$ 进行移动。也就是说,我们查看第一个字符,如果它是 L,我们就移动到左子节点;如果它是 R,我们就移动到右子节点;如果它是 U,我们就移动到父节点。如果在根节点收到 U 指令,我们仍停留在根节点,因为我们假设根节点的父节点是根节点本身。

现在我们有另一个指令字符串 $T$。从按照指令字符串 $S$ 移动后所在的节点开始,我们将执行指令字符串 $T$。但这一次,我们可以选择跳过字符串 $T$ 中的任意指令(甚至可以丢弃所有指令)。你需要告诉我,在执行指令字符串 $T$ 后(可以随意跳过其中的指令),我最终可能到达多少个不同的节点。

例如: 假设 $S = \text{L}$ 且 $T = \text{LU}$。我们的答案是 3。执行 $S$ 后,我们将到达根节点的左子节点。现在,当我们执行 $T$ 时,有 4 种情况: i 跳过所有字母:我们停留在当前节点。 ii 跳过 L 并执行 U:我们将到达根节点。 iii 执行 L 并跳过 U:我们将到达当前节点的左子节点。 iv 同时执行 L 和 U:我们将到达与情况 i 相同的节点。 由于我们最终可以到达 3 个不同的节点,因此答案是 3。

输入格式

测试文件的第一行包含一个整数 $N$ ($N \le 15$),表示测试用例的数量。接下来是 $N$ 个测试用例。每个测试用例包含两个非空字符串。第一行包含指令字符串 $S$,第二行包含指令字符串 $T$。你可以假设这些字符串中不会出现 L、R 或 U 以外的字母。字符串的长度不超过 $100000$。

输出格式

对于每个测试用例,输出用例编号,后跟最终可能到达的节点数量。由于答案可能很大,你需要将答案对 $21092013$ 取模。

样例

输入 1

2
L
LU
L
L

输出 1

Case 1: 3
Case 2: 2

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.