QOJ.ac

QOJ

Límite de tiempo: 10 s Límite de memoria: 1024 MB Puntuación total: 39 Interactivo

#12454. 数字方块

Estadísticas

你将建造 $N$ 座塔,每座塔由 $B$ 个立方体块组成,一次放置一个块。塔是自底向上建造的:放置在塔中的第 $i$ 个块最终位于从底部数起的第 $i$ 层。你需要在看到任何后续块之前决定将每个块放置在哪里,且一旦放置,块就不能移动。

每个块上印有一个十进制数字,塔的建造方式使得印有数字的面都朝前。字体设计使得块不能通过旋转来获得不同的数字(例如,印有 $6$ 的块不能通过旋转得到 $9$,反之亦然)。

例如,假设 $N = 3$ 且 $B = 3$,你当前拥有的塔如图 1 所示。如果接下来出现一个印有 $6$ 的块,你有两个选择:要么将其放在只有两个块的塔顶(如图 2 所示),要么开始建造第三座塔(如图 3 所示)。注意,你不能将其放在第一座塔的顶部,因为第一座塔已经有 $B$ 个块了。

图 1

图 2

图 3

建造完成后,我们从上到下读取每座塔正面印有的 $B$ 位整数(即最后放置在塔上的块上的数字是最高位)。注意,这些整数可能包含任意数量的前导零。然后,我们将这 $N$ 个整数相加,得到我们建造操作的得分。

例如,在下方的图 4 中,从左到右每座塔上读取的整数分别是 $123$、$345$ 和 $96$。该建造操作的得分为 $123 + 345 + 96 = 564$。

图 4

每个块上的数字是均匀随机生成的,且独立于任何其他信息。为了使你的解法被判定为正确,你在所有 $T$ 个测试用例上的得分总和必须至少为 $P$。

输入格式

这是一个交互式问题。请确保你已阅读 FAQ 中关于交互式问题的说明。

裁判程序最初会向你发送一行,包含四个整数 $T$、$N$、$B$ 和 $P$:测试用例的数量、塔的数量、每座塔的块数,以及通过此测试集所需的最低总得分。

然后,你必须处理 $T$ 个测试用例。每个测试用例包含 $N \times B$ 次交换。每次交换对应放置一个块。在每次交换中,裁判程序首先会打印一行,包含一个整数 $D$,表示你需要放置的块上印有的数字。你需要回复一行,包含一个整数 $i$,表示你想要放置该块的塔的编号(在 $1$ 到 $N$ 之间)。

在每个测试用例(最后一个除外)的最后一次交换后,裁判程序将立即开始下一个测试用例。在最后一个测试用例的最后一次交换后,裁判程序将打印额外的一行,包含一个整数:如果你的总得分至少为 $P$,则为 $1$,否则为 $-1$。

如果裁判程序收到格式错误的行、无效的塔编号,或者你程序指定的塔已经包含 $B$ 个块,裁判程序将打印单个数字 $-1$。在裁判程序因上述任何原因打印 $-1$ 后,它将不再打印任何输出。如果你的程序在收到 $-1$ 后继续等待裁判程序,你的程序将超时,导致“超出时间限制”(Time Limit Exceeded)错误。请注意,你有责任让你的程序及时退出,以接收“答案错误”(Wrong Answer)判决,而不是“超出时间限制”错误。通常情况下,如果超过内存限制或程序出现运行时错误,你将收到相应的判决。

你可以假设每个块的数字是均匀随机生成的,且对于每个数字、每个测试用例和每次提交都是独立的。因此,即使你提交完全相同的代码两次,裁判程序也可能使用不同的随机数字。

数据范围

时间限制:60 秒。 内存限制:1 GB。

$T = 50$。 $N = 20$。 $B = 15$。 $D$ 是 $0$ 到 $9$ 之间的十进制数字。

测试集 1(可见判决)

$P = 860939810732536850$(约为 $8.6 \times 10^{17}$)。 注意,此边界选择为 $T \times S$ 的约 $90\%$,其中 $S = 19131995794056374.42...$(约为 $1.9 \times 10^{16}$)是该问题在拥有无限运行时间的情况下,单个测试用例所能达到的最高期望得分。 上述 $S$ 的精确值可以在本地测试工具的第 13 行和第 14 行找到。

测试集 2(可见判决)

$P = 937467793908762347$(约为 $9.37 \times 10^{17}$)。 注意,此边界选择为 $T \times S$ 的约 $98\%$。

样例

样例交互

裁判程序 解法
2 3 3 1500
裁判程序提供 $T, N, B, P$
用例 1
3
裁判程序提供一个印有 $3$ 的块
1
解法将其放置在第 1 座塔上
2
裁判程序提供一个印有 $2$ 的块
1
解法将其放置在第 1 座塔上
5
2
4
2
1
1
我们现在处于图 1 所示的状态
6
3
3
2
9
3
0
3
我们现在处于图 4 所示的状态(和 = 564)
用例 2
7
裁判程序提供第二个用例的第一个块
3
解法将其放置在第 3 座塔上
(... 省略 7 次交换 ...)
8
裁判程序提供第二个用例的最后一个块
2
解法将其放置在第 2 座塔上(和 = 1285)
两个用例结束
1
裁判程序确认两个测试用例的总和(1849)至少为 1500

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.