QOJ.ac

QOJ

時間限制: 2 s 記憶體限制: 256 MB 總分: 100 互動

#7836. 凸区域

统计

这是一个交互式问题。

考虑平面上的无限方格网。我们在网格上选择一个区域:一组网格方块。 我们定义方块 $a$ 和 $b$ 之间的区域路径为方块序列 $c_1, c_2, \dots, c_k$,其中 $c_1 = a$,$c_k = b$,所有方块都属于该区域,且对于所有 $1$ 到 $k-1$ 之间的 $i$,方块 $c_i$ 和 $c_{i+1}$ 共享一条公共边。该路径的长度为 $k$。

如果对于区域中每一对属于该区域的方块 $(x_1, y_1)$ 和 $(x_2, y_2)$,都存在一条长度为 $|x_1 - x_2| + |y_1 - y_2|$ 的区域路径,我们称该网格区域是凸的。

评测系统选择一个凸区域并在其中指定一个特殊方块,我们称之为中心方块。 然后,评测系统按如下方式扩展该区域:选取所有尚不属于该区域但与区域内某个方块有公共顶点的方块。将所有这些方块添加到区域中,并将这些添加的方块称为区域的边界。

保证该区域及其边界可以被一个与网格对齐的 $41 \times 41$ 的正方形完全覆盖。

你需要通过以下查询来求出该区域的面积。每个查询由一系列命令组成,命令包括 “n”、“s”、“w”、“e”,分别表示向北、南、西、东移动。

在程序开始前,评测系统会在每个边界方块上放置一个标记。然后,每个标记根据指定的程序移动。如果下一条命令使标记移出区域,则该命令对该标记无效。对于每个标记,评测系统会统计它移动到中心方块的次数。查询的结果是所有标记的这些次数之和。

交互

参赛程序必须通过按以下格式之一打印命令来与评测系统交互:

  • “? s”,其中 $s$ 是一个非空字符串,包含不超过 $250$ 个字符 “n”、“s”、“w” 和 “e”,表示程序。对于此查询,评测系统将输出一个整数:所有标记移动到中心方块的次数之和。
  • “! ans”,其中 $ans$ 是该区域的面积(整数)。打印此命令后,程序应立即终止。

样例

输入 1

1
1
8
4
3

输出 1

? e
? w
? ssssswww
? sssssee
? wewsss
! 29

说明

在每个测试中,区域和中心方块都是预先固定且不会改变的。 样例对应于下图:

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.