QOJ.ac

QOJ

Time Limit: 10 s Memory Limit: 1024 MB Total points: 40 Difficulty: [show]

#12290. 栈管理

Statistics

你正在玩一种纸牌游戏,游戏中有 $N$ 叠正面朝上的牌,每叠初始时有 $C$ 张牌。每张牌都有一个数值(value)和一个花色(suit),且游戏中不存在两张牌的数值和花色组合完全相同。

在一次移动中,你可以执行以下操作之一:

  1. 如果有两张或更多相同花色的牌位于不同牌叠的顶部,你可以移除其中数值最小的那张牌。(当你移除某一叠的最后一张牌时,该牌叠依然存在,只是变为空叠。)
  2. 如果存在一个空叠,你可以从任意一个非空牌叠的顶部取出一张牌,并将其放置在该空叠的顶部(即作为该空叠中的唯一一张牌)。

如果你能通过一系列移动,使得最终每个牌叠中最多只有一张牌,你就赢得了游戏。给定初始排列,判断是否可能赢得游戏。

输入格式

输入的第一行包含一个整数 $P$,表示测试用例中将使用的预制牌叠数量。接下来有 $P$ 行,第 $i$ 行以一个整数 $C_i$ 开头,表示第 $i$ 个预制牌叠中的牌数,随后是 $C_i$ 个整数对。这些有序对中的第 $j$ 个包含两个整数 $V_{ij}$ 和 $S_{ij}$,分别表示第 $i$ 个预制牌叠中从顶部数第 $j$ 张牌的数值和花色。

接下来的一行包含一个整数 $T$,表示测试用例的数量。随后是 $T$ 个测试用例。每个测试用例的第一行包含两个整数 $N$ 和 $C$:牌叠的数量以及每叠牌的张数。接下来的一行包含 $N$ 个整数 $P_i$,表示该测试用例所使用的预制牌叠的索引(从 $0$ 开始)。

输出格式

对于每个测试用例,输出一行 Case #x: y,其中 $x$ 是测试用例编号(从 $1$ 开始),如果可能赢得游戏则 $y$ 为 POSSIBLE,否则为 IMPOSSIBLE

数据范围

时间限制:每个测试集 20 秒。 内存限制:1 GB。 $1 \le T \le 100$。 $2 \le P \le 60000$。 $0 \le P_i < P$,对于所有 $i$。 第 $P_i$ 个预制牌叠恰好有 $C$ 张牌。 测试用例中不存在两张牌的数值和花色组合完全相同。

小型数据集(测试集 1 - 可见)

$2 \le N \le 4$。 $2 \le C_i \le 13$,对于所有 $i$。 $2 \le C \le 13$。 $1 \le V_{ij} \le 13$,对于所有 $i$ 和 $j$。 $1 \le S_{ij} \le 4$,对于所有 $i$ 和 $j$。

大型数据集(测试集 2 - 隐藏)

$2 \le N \le 50000$。 $2 \le C_i \le 50000$,对于所有 $i$。 $2 \le C \le 50000$。 $4 \le N \times C \le 10^5$。 $1 \le V_{ij} \le 50000$,对于所有 $i$ 和 $j$。 $1 \le S_{ij} \le 50000$,对于所有 $i$ 和 $j$。

样例

输入 1

5
2 7 2 7 1
2 6 4 7 4
2 3 2 6 2
2 4 2 10 2
2 5 4 7 3
2
2 2
0 2
3 2
4 1 3

输出 1

Case #1: POSSIBLE
Case #2: IMPOSSIBLE

说明

在样例 1 中,有两叠牌,每叠有两张。第一叠顶部是花色 2 数值为 7 的牌,下面是花色 1 数值为 7 的牌。第二叠顶部是花色 2 数值为 3 的牌,下面是花色 2 数值为 6 的牌。

可以通过以下方式赢得游戏: 移除第二叠中花色 2 数值为 3 的牌。 移除第二叠中花色 2 数值为 6 的牌。这使得第二叠变为空叠。 * 将花色 2 数值为 7 的牌移动到第二叠。此时满足获胜条件:所有牌叠最多只有一张牌。

在样例 2 中,有三叠牌,每叠有两张。此情况下无法赢得游戏;唯一可能的移动是移除第三叠顶部花色 4 数值为 5 的牌,但这不会开启任何新的移动。

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.