QOJ.ac

QOJ

时间限制: 3.0 s 内存限制: 1024 MB 总分: 100 交互 可 Hack ✓

#14710. 逃离陷阱

统计

这是一个交互式问题。

Panda 是一个富有冒险精神的孩子,他在探索遗迹时意外触发了一个陷阱。该陷阱是一个具有 $N$ 个顶点的正多边形,顶点按逆时针方向依次编号为 $1, 2, \dots, N$。如果他想逃离陷阱,就必须摧毁陷阱的中心(即多边形的重心)。(正多边形是指每条边长度相等且每个内角也相等的凸多边形。)

Panda 不知道多边形的边长,也不清楚自己的确切位置。他可能在正多边形的内部、边界上或外部。他唯一的工具是一种测量方法:他可以选择多边形的任意两个顶点 $a$ 和 $b$,该工具会告诉他由他当前位置与这两个顶点所构成的三角形的面积。时间紧迫,他最多只能进行 5 次测量。你的任务是帮助他计算他当前位置到多边形重心的距离,以便他能召唤火环来摧毁陷阱。

交互

本题包含多组交互测试。首先,你的程序应当从标准输入中读取一个整数 $T$($1 \le T \le 10^4$),表示有 $T$ 组交互测试。

在每组测试开始时,你的程序应当从标准输入中读取一个整数 $N$($4 \le N \le 200$),表示正多边形的顶点数。保证该正多边形的外接圆半径(即多边形重心到任意顶点的距离)是区间 $[1, 100]$ 内的一个实数,且 Panda 的位置到多边形重心的距离(即答案)不超过 $10000$。在每组测试数据中,所有隐藏参数均保持不变,包括多边形的外接圆半径、Panda 的位置以及多边形顶点的确切坐标。

对于测量查询,向标准输出输出一行格式为 ? x y 的内容,其中 $x, y$ 是 $1$ 到 $N$ 之间的两个整数,表示你想要查询的正多边形上的顶点编号。交互系统将返回一个至少有 10 位有效数字的非负实数,表示由这两个顶点和 Panda 的位置所构成的三角形的面积。请注意,如果你的程序进行了超过 5 次查询,交互器将输出一行 -1 并停止交互,你的程序将获得 Wrong Answer。

在最多 5 次查询后,向标准输出输出一行格式为 ! d 的内容以给出答案,其中 $d$ 是一个非负实数,表示 Panda 到正多边形重心的距离。如果你的输出 $p$ 与交互系统计算的标准答案 $q$ 之间的绝对误差或相对误差不超过 $10^{-4}$,即 $\min\left(\frac{|p-q|}{q}, |p-q|\right) \le 10^{-4}$,则你的输出将被视为正确。

在这种情况下,交互器将输出一行 Correct 并继续下一组数据的交互;否则,交互器将输出一行 Wrong 并停止交互,你的程序将获得 Wrong Answer。

说明:每次输出后必须换行,并且必须清空标准输出缓冲区。为了清空缓冲区,你可以:

  • 对于 C 或 C++,使用 fflush(stdout)cout.flush()
  • 对于 Java,使用 System.out.flush()
  • 对于 Python,使用 stdout.flush()

样例

样例输入 1

1
4
1.000000000
3.000000000
3.000000000
1.000000000
Correct

样例输出 1

? 1 2
? 2 3
? 3 4
? 1 4
! 1.000000000

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.