1 条题解
-
0
题目重述
有一条直线,上面有 个互不相同的整数点 。
定义一个点 是点 的最近点,如果不存在另一个点 使得 。现在要添加一个新的整数点(不能与已有任何一个点重合),使得这个新点同时成为所有已有点的最近点。
问是否可能。
第一步:理解“最近点”的含义
对于集合 ,点 的最近点可能是:
- 它左边的邻居 (如果存在);
- 它右边的邻居 (如果存在);
- 或者两者距离相等时,两个都是最近点。
我们要加一个新点 (整数,且 ),使得对每个 , 是 的最近点。
这意味着:对于每个 , 到 的距离 严格小于 到任何其它原有邻居的距离。
第二步:考虑端点的约束
对于最左点 :
它的原有点中,最近候选是 (距离 )。
要使 比 更靠近 ,必须满足:因为 是整数,且 是整数,这个不等式的整数解是:
$$y \in [x_1, x_1 + (x_2 - x_1 - 1)] \quad \text{且} \quad y \neq x_1 $$更简单写成:
且 (因为 是整数且 )。
所以:
这是对 的第一个约束。
对于最右点 :
原有点中最近候选是 (距离 )。
要使 比 更靠近 ,必须满足:整数解为:
即:
第三步:合并两端点的约束
同时满足:
取交集,必须存在整数 满足:
$$\max(x_1 + 1,\; x_{n-1} + 1) \le y \le \min(x_2 - 1,\; x_n - 1) $$并且 不能等于任何已有的 。
第四步:中间点的约束
对于中间的 (),它左右都有邻居 和 。
要让 比这两个邻居都更靠近 ,需要同时满足:这意味着 必须落在 的两侧的一个小邻域内,且比两个邻居都近。
但注意: 的左右邻居本身就是点集中的点,如果 离 比它们都近,那么 必须夹在 和最近邻居之间。
这其实要求: 到左边邻居的距离 或 到右边邻居的距离 ,并且 取那个较大间隙中的某个整数。关键观察:如果 ,那么 的左边邻居是 ,右边邻居是 。
$$|y - x_2| < x_2 - x_1 \quad \text{且} \quad |y - x_2| < x_3 - x_2 $$
要让 同时比 和 更靠近 ,必须:即 必须在 的一个小邻域内,但这个邻域半径小于 。
然而,这个邻域内除了 本身,可能没有任何整数点,尤其是当 或 时,没有整数可以插入。实际上,如果 ,几乎不可能,因为 的两边至少一边距离为 (因为点是整数且递增,间距至少为 ),这样 不可能同时比两个邻居更近。
第五步:结论推导
我们列举所有可能:
-
:
考虑 ,它与 的距离至少为 ,与 的距离至少为 。
要让 比 更靠近 ,必须 (最坏情况)。
即 ,而 是整数且不等于 ,不可能。
所以 时无解。 -
:
约束为:取交集:
存在整数 的条件是:
$$x_1 + 1 \le x_2 - 1 \quad \Rightarrow \quad x_2 - x_1 \ge 2 $$即两点距离至少为 。
此时可取 或 ,都能同时成为两点的最近点。 -
且 :
没有整数 满足 ,所以无解。
第六步:最终答案
结论:
- 当 且 时,输出
YES - 否则输出
NO
第七步:公式总结
$$\text{答案} = \begin{cases} \text{YES}, & \text{if } n = 2 \text{ and } x_2 - x_1 > 1 \\ \text{NO}, & \text{otherwise} \end{cases} $$
第八步:复杂度分析
- 每个测试用例只需 时间判断,总复杂度 。
- 空间复杂度 。
- 1
信息
- ID
- 7205
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 4
- 标签
- 递交数
- 1
- 已通过
- 1
- 上传者