QOJ.ac

QOJ

実行時間制限: 5.0 s メモリ制限: 256 MB 満点: 100 インタラクティブ

#15616. RMQ

統計

这是一个交互式问题。

Busy Beaver 有一个由 $1$ 到 $10^9$ 之间互不相同的正整数组成的秘密数组 $a_1, a_2, \dots, a_N$。对于 $1 \le l \le r \le N$,Busy Beaver 将 $f(l, r)$ 定义为 $\min(a_l, a_{l+1}, \dots, a_r)$。

Busy Beaver 允许你通过询问一些查询来获取有关该数组的信息。在一次查询中,你可以指定 $l$ 和 $r$($1 \le l \le r \le N$),Busy Beaver 会告诉你 $f(l, r)$ 的值,代价为 $\frac{1}{r-l+1}$。你必须确保所有查询的总代价不超过 $1$。

在完成所有查询后,你需要向 Busy Beaver 报告一个二元组 $(l, r)$ 的列表,表示你已确定其 $f(l, r)$ 值的二元组。如果你的任何一个答案错误,Busy Beaver 将会不高兴并给你 $0$ 分。否则,你的得分将取决于在所有满足 $1 \le l \le r \le N$ 的 $\frac{N(N+1)}{2}$ 个二元组 $(l, r)$ 中,你确定了 $f(l, r)$ 值的二元组所占的比例(详见“子任务”部分)。

为了减少输出的大小,你需要使用 $k$ 个格式为 $(l_{\min}, l_{\max}, r_{\min}, r_{\max}, v)$ 的五元组来报告你所掌握的信息,其中 $1 \le l_{\min} \le l_{\max} \le r_{\min} \le r_{\max} \le N$ 且 $1 \le v \le 10^9$。每个五元组声明:对于所有满足 $l_{\min} \le l \le l_{\max}$ 且 $r_{\min} \le r \le r_{\max}$ 的 $(l, r)$,都有 $f(l, r) = v$。任何不对应任何五元组的二元组 $(l, r)$ 都将被视为未指定。允许有多个五元组描述同一个二元组 $(l, r)$,但如果这些五元组指示了不一致的值,你将获得 $0$ 分。

交互

输入的第一行包含一个整数 $N$($1 \le N \le 10^5$),表示 Busy Beaver 秘密数组的长度。

你可以通过输出格式为 ? l r 的行来重复进行查询,其中 $1 \le l \le r \le N$。然后,评测机将响应一个整数,表示 $f(l, r)$ 的值。如果你超过了总代价 $1$,评测机将响应 -1,此时你应该立即终止程序以获得“答案错误(Wrong Answer)”的评测结果。

在结束查询后,首先输出一行格式为 ! k($0 \le k \le 2N$),表示你将使用 $k$ 个五元组 $(l_{\min}, l_{\max}, r_{\min}, r_{\max}, v)$ 来描述你对 $f$ 的了解。

接下来的 $k$ 行,每行应包含 $5$ 个空格分隔的整数 $l_{\min}, l_{\max}, r_{\min}, r_{\max}$ 和 $v$,指定一个五元组。

交互器是非适应性的(non-adaptive),这意味着 Busy Beaver 不会根据你的查询来改变其秘密数组 $a$ 的元素。

子任务

对于所有用于评分的测试用例,$N = 10^5$。

如果你超过了代价 $1$,或者你声称的任何 $f(l, r)$ 值不正确,你将获得 $0$ 分并得到“答案错误(Wrong Answer)”的评测结果。

否则,设 $x$ 为你指定了值的 $f(l, r)$ 占全部 $\frac{N(N+1)}{2}$ 个值的比例。你在该测试用例上的得分将等于:

$$\left\lfloor \min\left(100, 100 \cdot \frac{x}{0.8}\right) \right\rfloor$$

特别地,如果 $x \ge 0.8$,你将获得该测试用例的满分。

你的最终得分将是所有测试用例中的最低得分。

样例

输入样例 1

6
31
26
53

输出样例 1

? 1 3
? 1 6
? 5 6
! 4
1 1 3 3 31
1 4 4 6 26
2 3 5 5 26
5 5 6 6 53

说明

请注意,样例不满足 $N = 10^5$,因此它不会包含在实际的测试用例中。它仅用于说明交互格式。

在样例中,Busy Beaver 的秘密数组为 $a = [31, 41, 59, 26, 53, 58]$。你决定进行以下查询:

  • $l = 1, r = 3$:Busy Beaver 计算 $f(1, 3) = \min(31, 41, 59) = 31$ 并告诉你值 $31$。
  • $l = 1, r = 6$:Busy Beaver 计算 $f(1, 6) = \min(31, 41, 59, 26, 53, 58) = 26$ 并告诉你值 $26$。
  • $l = 5, r = 6$:Busy Beaver 计算 $f(5, 6) = \min(53, 58) = 53$ 并告诉你值 $53$。

注意,你所有查询的总代价为 $\frac{1}{3} + \frac{1}{6} + \frac{1}{2} = 1$,没有超过要求的限制 $1$。

根据这些信息,你向 Busy Beaver 报告了你推导出的以下 $f(l, r)$ 值:

  • 对于所有 $1 \le l \le 1, 3 \le r \le 3$,有 $f(l, r) = 31$。
  • 对于所有 $1 \le l \le 4, 4 \le r \le 6$,有 $f(l, r) = 26$。
  • 对于所有 $2 \le l \le 3, 5 \le r \le 5$,有 $f(l, r) = 26$。这与前一行的信息有重叠,但这是一个有效的输出。
  • 对于所有 $5 \le l \le 5, 6 \le r \le 6$,有 $f(l, r) = 53$。

在去除重叠后,你在 $\frac{N(N+1)}{2} = 21$ 个不同的二元组 $(l, r)$ 中,报告了其中的 $14$ 个 $f(l, r)$ 值。因此,Busy Beaver 将计算出 $x = \frac{14}{21}$,并在此次交互中给予你以下分数:

$$\left\lfloor 100 \cdot \frac{14/21}{0.8} \right\rfloor = \lfloor 83.\bar{3} \rfloor = 83$$

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.