#HK4240. 「NordicOI 2022」Quark Microscopy

「NordicOI 2022」Quark Microscopy

题目描述

题目译自 NordicOI 2022 T3 「Quark Microscopy

灾难发生了!Niels 珍爱的宠物原子被宇宙射线击中,分裂成了大量的夸克。Niels 现在急于找到这些夸克并将它们重新拼凑起来,他向你寻求帮助。

这些 NN 个夸克位于一条 11 米(101810^{18} 阿米)长的线上。你有一个非常精确但有点古怪的夸克显微镜,它能够检测并测量附近夸克的距离。由于量子效应,它不能直接告诉你离测量位置最近的夸克的位置,而是告诉你第二近的距离!它还会告诉你在这个距离上的夸克数量。

具体来说:你可以在这条线上整数位置 xx 进行测量。对于每次测量,显微镜会确定从 xx 到所有夸克的距离 d1,d2,,dnd_1, d_2, \ldots, d_n,并按升序排列,然后你会得到 d2d_2,以及满足 di=d2d_i = d_2 的索引数量(要么是 11,要么是 22)。在进行足够多的测量后,你需要回答所有夸克的位置。

每个夸克的位置是从线的起点开始的 11101810^{18} 之间的整数。根据泡利不相容原理,没有两个夸克会占据相同的位置。

根据你进行的测量次数,你的程序将获得不同的分数。

交互方式

你的程序将通过标准输入输出与评测系统进行交互。首先,评测系统会输出一行,包含夸克的数量 NN (3N100)(3 \le N \le 100) 和测试组的编号 TT (1T3)(1 \le T \le 3)

然后,你的程序可以进行以下形式的查询:

  • ?x\texttt{?}\,x (1018x21018-10^{18} \le x \le 2 \cdot 10^{18}):查找距离 xx 第二近的夸克的距离。评测系统会回应两个用空格分隔的数字 rrmm,其中 rr 是距离第二近的夸克的距离,mm 是在这个距离上的夸克数量(要么是 11,要么是 22)。
  • !a1a2an\texttt{!}\,a_1\,a_2\,\ldots\,a_n (1ai1018)(1 \le a_i \le 10^{18}):猜测所有夸克的位置。a1,a2,,ana_1, a_2, \ldots, a_n 可以按任意顺序给出。此后不应再进行其他查询。

每次查询后,你应确保刷新标准输出,然后再读取评测系统的响应,否则你的解决方案可能会被判定为超时。

如果你进行无效查询,你的程序可能被判为 Wrong AnswerRuntime Error

为了方便测试你的解决方案,我们提供了一个简单的工具,你可以在「文件」中下载。请参阅文件顶部的注释,了解如何使用它。

样例 1

交互器输出 程序输出
3 3
? 5
6 1
? 15
4 1
? 11
1 2
! 11 10 12

样例 2

交互器输出 程序输出
3 1
? 1
2 1
? 2
1 2
? 3
2 1
? 47
45 1
! 1 3 92

数据范围与提示

详细子任务附加限制及分值如下表所示。

子任务 分值 附加限制
11 40r40 \cdot r 一个夸克位于位置 11
22 40r40 \cdot r 所有坐标都是偶数
33 20r20 \cdot r 无附加限制

对于每个子任务,令 QQ 为该组中测试点中使用的 ?\texttt{?} 型查询的最大数量。然后,该子任务的 rr 根据下表定义:

QQ rr
Q>15000Q > 15\,000 00
15000Q>5600 15\,000 \ge Q > 5\,600 0.40.4
 5600Q>3500  5\,600 \ge Q > 3\,500 0.60.6
 3500Q>2400  3\,500 \ge Q > 2\,400 0.80.8
 2400Q  2\,400 \ge Q 11