QOJ.ac

QOJ

حد الوقت: 2 s حد الذاكرة: 1024 MB مجموع النقاط: 100 تفاعلية

#3891. 失稳的无人机

الإحصائيات

你的无人机公司正计划通过一款名为“银行与俯仰控制器”(Bank And Pitch Controller)的惊人新软件在竞争中脱颖而出。该软件将确保无人机始终保持水平,这是高端无人机的必备功能。为此,它需要测量无人机的横滚角(bank)和俯仰角(pitch)。由于无人机已经配备了前置摄像头,我们将利用它来测量这些数值。

给定来自该摄像头的单帧图像,软件会运行一个高度先进的机器学习模型,以确定帧中的每个像素是属于天空、海洋,还是正好位于地平线上。该机器学习模型运行速度较慢,在下一帧视频到来之前只能处理 900 个像素。为了足够快地稳定无人机,你需要创建一个高效的算法,通过查询最多 900 个像素来找到地平线。利用这些信息,BAPC 的其余部分将能够计算出横滚角和俯仰角。

图 D.1:样例 1 的可视化,显示了查询的像素,其中两个位于地平线上的像素以白色标记。

已知地平线可以建模为一条精确的直线,并且图像中至少有两个像素会被归类为地平线。此外,无人机通常处于大致水平的飞行状态,因此你可以假设图片的最顶行始终是天空,而图片的最底行仅包含海洋像素。

第一个样例的可视化如图 D.1 所示。

交互

这是一个交互式问题。你的提交程序将针对一个交互器运行,该交互器读取你程序的标准输出并向你的程序写入标准输入。此交互需要遵循特定的协议:

交互器首先发送一行,包含两个整数 $w$ 和 $h$ ($3 \le w, h \le 1000$),分别代表图像的宽度和高度。

然后,你的程序应进行最多 900 次查询以确定地平线。每次查询通过打印一行格式为 “? x y” ($1 \le x \le w, 1 \le y \le h$) 的内容来完成,其中 $x$ 是从左侧开始计数的像素列,$y$ 是从底部开始计数的像素行。对于每次查询,交互器将打印以下内容之一:“sky”(天空)、“sea”(海洋)或“horizon”(地平线),分别表示该像素位于地平线上方、下方或正好在地平线上。

当你确定了地平线后,打印一行格式为 “! x1 y1 x2 y2” ($1 \le x_1, x_2 \le w, 1 \le y_1, y_2 \le h$) 的内容,包含一个感叹号,后跟地平线上两个不同像素的坐标。这一行不计入你的查询次数。在此之后,你的提交程序应退出,且不再读取任何输入。

如果有多个有效的解决方案,你可以输出其中任意一个。

请确保在每次写入后刷新缓冲区。

我们提供了一个测试工具来帮助你开发解决方案。

样例

样例交互 1

5 5
? 2 4
sky
? 4 3
sea
? 5 4
horizon
? 2 3
sky
? 3 3
horizon
! 5 4 3 3

样例交互 2

1000 1000
? 999 999
horizon
? 2 3
horizon
! 2 3 999 999

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.