Universal Cup Judging System

Universal Cup

Time Limit: 2.0 s Memory Limit: 1024 MB Total points: 100 Interactive
Statistics

这是一个交互式问题。

在简化版的“Understand”游戏中,你处于一个 $256 \times 256$ 的网格中。网格内有 $n$ 个物品,其具体位置尚不明确。多个物品可能位于同一个网格单元中。

你的任务是通过一系列交互式查询来确定每个物品的位置,查询次数限制为不超过 16 次。每次查询允许你在网格上绘制一条简单路径,交互器将返回一个长度为 $n$ 的二进制字符串,表示每个物品是否在该路径上。

保证交互器是非自适应的,这意味着物品的位置在开始查询之前就已经确定了。

输入格式

输入的第一行包含一个整数 $n$ ($1 \le n \le 10\,000$),表示网格中物品的数量。

交互

交互在读取整数 $n$ 后开始。

然后,进行最多 16 次查询。进行查询的方式为:在一行中输出 “? $x_0$ $y_0$ $k$ $s$”。其中,$1 \le x_0, y_0 \le 256$ 表示路径从从上到下的第 $x_0$ 行、从左到右的第 $y_0$ 列开始。$1 \le k \le 256 \times 256$ 表示简单路径的长度。$s$ 是一个长度为 $k-1$ 的字符串,由字符 ‘L’、‘R’、‘U’ 和 ‘D’ 组成。第 $i$ 个字符表示从路径上第 $i$ 个单元格移动到第 $i+1$ 个单元格的方向,其中:

  • ‘L’ 表示从 $(x, y)$ 移动到 $(x, y-1)$,
  • ‘R’ 表示从 $(x, y)$ 移动到 $(x, y+1)$,
  • ‘U’ 表示从 $(x, y)$ 移动到 $(x-1, y)$,
  • ‘D’ 表示从 $(x, y)$ 移动到 $(x+1, y)$。

如果 $k=1$,你可以直接输出 “? $x_0$ $y_0$ $k$”,也可以不输出额外的空格(这样做也是允许的)。

此处,你输出的路径必须是简单的,这意味着你的路径不应经过同一个网格单元超过一次。此外,路径必须位于 $256 \times 256$ 的网格内,这意味着路径上的每个网格 $(x, y)$ 都必须满足 $1 \le x, y \le 256$。

在你以正确格式输出查询后,读取一个长度为 $n$ 的二进制字符串 $t$,其中如果第 $i$ 个物品 ($1 \le i \le n$) 在你的路径上,则 $t$ 的第 $i$ 个字符为 1,否则为 0。如果你的查询无效或查询次数超过 16 次,你将收到单个字符 ‘-’。读取该字符后,你的程序必须立即终止以接收 “Wrong Answer” 判决,否则你可能会得到任何可能的判决。

在交互的任何时刻,如果你想猜测每个物品的位置,请在一行中输出 “! $x_1$ $y_1$ $x_2$ $y_2 \dots x_n$ $y_n$”,其中 $(x_i, y_i)$ 表示你猜测的第 $i$ 个物品的位置。此猜测不计入查询次数。执行此操作后,你应该立即终止你的程序。

在打印每次查询和答案后,不要忘记输出换行符并刷新输出。否则,你可能无法获得正确的判决。要刷新输出,请使用:

  • C++ 中的 fflush(stdout)cout.flush()
  • Java 中的 System.out.flush()
  • Python 中的 stdout.flush()

样例

输入格式 1

4
0101
1111
1100
0001

输出格式 1

? 3 1 9 RRRUULLD
? 2 1 4 RRR
? 2 1 6 URDDR
? 2 4 1
! 2 1 2 2 2 3 2 4

说明

请注意,样例测试中的额外空行仅为了方便理解,你不应在程序中输出任何额外的空行。

在此,我们提供样例测试中交互的图形说明。在下图中,我们仅展示了棋盘左上角的 $4 \times 4$ 部分,但棋盘的实际大小为 $256 \times 256$。所有四个物品的位置都用星号标记。每个查询路径的起点用正方形标记,结果显示在路径下方(实心圆代表 1,空心圆代表 0)。

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.