QOJ.ac

QOJ

Límite de tiempo: 7 s Límite de memoria: 256 MB Puntuación total: 100 Comunicación

#13613. 问题

Estadísticas

A 和 B 想要潜入一个绝密的研究实验室。不幸的是,入口处配备了复杂的安全系统:系统会提出一个问题(为了简便起见,该问题被编码为一个整数 $q$ ($1 \le q \le N$)),必须回答“yes”或“no”。如果回答正确,系统会开门;否则会触发警报。A 和 B 都知道,系统的提问 $q$ 总是等于 $x$ 或 $y$ 之一 ($x \neq y$),其中对 $x$ 的正确回答是“yes”,对 $y$ 的正确回答是“no”。

然而,当 A 和 B 策划行动细节时,他们记不起 $x$ 和 $y$ 的具体值。因此,B 被派往入口处进行尝试,而 A 则留在一定距离外以确保他们能够逃脱。

但突然间,就在问题出现时, A 想起了 $x$ 和 $y$ 以及它们的正确答案。但由于距离太远,A 无法给 B 传递明确的指令。他只能向 B 大喊一个整数 $h$ ($1 \le h$)。因此,A 试图将 B 正确回答问题所需的所有信息编码进 $h$ 中。

请在这种情况下帮助 A 和 B,编写一个能够同时扮演 A 和 B 角色的程序。你的程序应当:

1) 对于给定的值 $N, x, y$,帮助 A 并告诉他应该向 B 喊出哪个数字 $h$;以及 2) 对于给定的值 $N, q, h$,帮助 B 并告诉他应该选择什么回答。

你的程序将按如下方式进行测试:首先,程序需要帮助 A 并为若干个测试用例生成数字 $h$;然后,程序需要帮助 B,并将之前生成的数字 $h$ 作为测试用例输入。也就是说,对于每个测试点,你的提交将被运行恰好两次。

输入格式

输入的第一行包含一个整数,为 1(在第一轮运行中)或 2(在第二轮运行中)。

如果为 1,则程序需要帮助 A。输入的其余部分主要由 $T$ 个测试用例组成:第二行包含整数 $N$ 和 $T$(在同一个输入中,所有测试用例的 $N$ 均相同)。接下来的 $T$ 行中,第 $i$ 行描述测试用例 $i$,包含两个整数 $x$ 和 $y$ ($1 \le x, y \le N, x \neq y$)。

如果为 2,则程序需要帮助 B。输入的其余部分主要由 $T$ 个测试用例组成:第二行包含整数 $N$ 和 $T$(在同一个输入中,所有测试用例的 $N$ 均相同)。接下来的 $T$ 行中,第 $i$ 行包含两个整数 $q$ 和 $h$ ($1 \le q \le N, 1 \le h$);其中 $h$ 是程序在第一轮运行中为测试用例 $i$ 输出的数字。

输出格式

如果程序需要帮助 A,则输出应包含 $T$ 行,其中第 $i$ 行包含 A 在测试用例 $i$ 中应当向 B 喊出的整数 $h$ ($1 \le h$)。对于任意两个输入值 $x$ 和 $y$ 相同的测试用例,你的程序必须输出相同的 $h$ 值。

如果程序需要帮助 B,则输出应包含 $T$ 行,其中第 $i$ 行包含字符串 yesno:即测试用例 $i$ 的正确回答。对于任意两个输入值 $q$ 和 $h$ 相同的测试用例,你的程序必须输出相同的回答字符串。

测试

为了进行测试,你可以使用提供的 manager.sh 工具:

创建一个“输入文件”(例如 input.txt):第一行必须包含数字 $N$ 和 $T$。接下来的 $T$ 行中,每行包含对应测试用例的数字 $x, y$ 和 $q$。

然后(在照常编译后),你可以使用以下命令运行你的解决方案:

./manager.sh ./yoursolution input.txt

这将创建文件 for1.txtfrom1.txt(分别对应帮助 A 的程序的输入和输出文件)以及 for2.txtfrom2.txt(分别对应帮助 B 的程序的输入和输出文件)。此外,它还会告诉你你的解决方案是否正确解决了你指定的输入。

数据范围

在所有测试用例中,$1 \le N \le 920$ 且 $1 \le T \le 2\,000\,000$。

子任务

你的得分取决于在所有测试输入文件中,A 向 B 喊出的最大数字 $h$:

最大 $h$ 得分
$\ge 21$ 0(报告为错误输出)
20 27
19 30
18 33
17 37
16 42
15 50
14 60
13 75
$\le 12$ 100

此外,你的程序在所有输入文件的第二轮运行中的输出必须全部正确;否则,你的程序将获得 0 分。

样例

以下是使用 manager.sh 时的一个示例。

input.txt 的内容为:

5 6
1 2 1
4 5 4
1 2 2
3 5 3
4 5 5
5 2 2

样例输入 1

1
5 6
1 2
4 5
1 2
3 5
4 5
5 2

样例输出 1

12
2
12
4
2
1

样例输入 2

2
5 6
1 12
4 2
2 12
3 4
5 2
2 1

样例输出 2

yes
yes
no
yes
no
no

说明

请注意,from1.txt(即样例输出 1)的许多其他输出也是合法的,但只有此 from2.txt(即样例输出 2)的输出是正确的。

反馈

本题提供完整反馈,即显示的公开得分等于你的实际得分,并且会显示所有测试用例的评测结果。

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.