QOJ.ac

QOJ

时间限制: 2 s 内存限制: 2048 MB 总分: 100 通信

#5533. 戏法

统计

一群游客在参观布兰城堡时被德古拉伯爵抓住了!游客中有一位魔术师,他与伯爵达成了以下协议:他将表演一个精妙的魔术,如果成功,德古拉将释放所有游客。

为了表演这个魔术,魔术师需要两名助手。魔术开始后,他不能再与助手交流,助手之间也不能交流。魔术师会给伯爵一副包含 $2N + 1$ 张牌的牌组,牌上写着从 $0$ 到 $2N$ 的每个数字。伯爵会抽出一张牌并将其隐藏。然后,从剩下的 $2N$ 张牌中,伯爵会选出 $N$ 张牌给第一位助手,剩下的 $N$ 张牌给第二位助手。接着,每位助手从自己收到的牌中选出两张,并按顺序展示给魔术师看(不能让另一位助手看到)。仅凭这四张牌,魔术师就能猜出德古拉隐藏的牌!

帮助魔术师,别让游客成为吸血鬼的晚餐!

你的程序将针对每个测试运行三次。第一次运行时,它将扮演第一位助手的角色。第二次运行时,它将扮演第二位助手的角色。第三次运行时,它将扮演魔术师的角色。

输入格式

输入文件 trick.in 的第一行包含一个整数 $T$,表示测试用例的数量(即该测试中魔术表演的次数)。第二行包含一个整数 $R$,属于集合 $\{1, 2, 3\}$,表示你的程序在该文件中所有测试用例中将扮演的角色。

如果 $R = 1$,则你的程序扮演第一位助手的角色。如果 $R = 2$,则你的程序扮演第二位助手的角色。在这两种情况下,第 $2i + 1$ 行($1 \le i \le T$)包含一个整数 $N_i$,表示对于第 $i$ 个测试用例,牌组将包含 $2N_i + 1$ 张牌。第 $2i + 2$ 行($1 \le i \le T$)包含 $N_i$ 个整数,表示当前助手在第 $i$ 个测试用例中收到的牌。

如果 $R = 3$,则你的程序扮演魔术师的角色。第 $2i + 1$ 行($1 \le i \le T$)包含一个整数 $N_i$,含义与上述角色相同。第 $2i + 2$ 行($1 \le i \le T$)包含四个整数,分别表示你的程序在 $R = 1$ 的运行中为第 $i$ 个测试用例打印的两张牌,以及在 $R = 2$ 的运行中为第 $i$ 个测试用例打印的两张牌。两对牌中的牌将按照你的程序在相应运行中打印的顺序给出。

输出格式

如果 $R = 1$ 或 $R = 2$,则你的程序必须在输出文件 trick.out 的第 $i$ 行($1 \le i \le T$)打印两个由单个空格分隔的整数,表示你在第 $i$ 个测试用例中展示给魔术师的两张牌。这两个数字必须不同,且必须存在于输入文件中给出的 $N_i$ 张牌中。

如果 $R = 3$,则你的程序必须在第 $i$ 行($1 \le i \le T$)打印一个整数,表示第 $i$ 个测试用例中德古拉隐藏的牌。

数据范围

  • $6 \le N_i \le 1\,234\,567$ ($1 \le i \le T$)
  • $S_N \le 1\,234\,567$,其中 $S_N = N_1 + N_2 + \dots + N_T$
  • 对于分值为 29 分的测试,满足 $N_i = 6$ ($1 \le i \le T$)
  • 对于分值为另外 19 分的测试,满足 $6 \le N_i \le 30$ ($1 \le i \le T$) 且 $S_N \le 123\,456$
  • 对于分值为另外 30 分的测试,满足 $6 \le N_i \le 500$ ($1 \le i \le T$),$S_N \le 123\,456$,且至多有 10 个测试用例满足 $N_i > 50$

样例

样例输入 1

2
1
6
6 1 2 5 7 10
6
9 8 2 0 4 6

样例输出 1

1 2
8 4

样例输入 2

2
2
6
3 0 4 9 12 8
6
7 1 11 10 3 5

样例输出 2

4 3
1 3

样例输入 3

2
3
6
1 2 4 3
6
8 4 1 3

样例输出 3

11
12

说明

这三个样例代表了三次运行。

魔术表演了两次。对于第一个测试用例,第一位助手收到了牌 $1, 2, 5, 6, 7$ 和 $10$,并按顺序向魔术师展示了牌 $1$ 和 $2$。第二位助手收到了牌 $0, 3, 4, 8, 9$ 和 $12$,并按顺序向魔术师展示了牌 $4$ 和 $3$。在看到这四张牌后,魔术师运用他的魔法能力猜出德古拉隐藏的牌是 $11$。

Editorials

IDTypeStatusTitlePosted ByLast UpdatedActions
EditorialOpen Official EditorialQingyu- Download

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.