1 条题解

  • 0
    @ 2026-5-18 13:28:01

    题目重述

    有一条直线,上面有 nn 个互不相同的整数点 x1<x2<<xnx_1 < x_2 < \dots < x_n
    定义一个点 ii 是点 jj 的最近点,如果不存在另一个点 kk 使得 jk<ji|j-k| < |j-i|

    现在要添加一个新的整数点(不能与已有任何一个点重合),使得这个新点同时成为所有已有点的最近点。

    问是否可能。


    第一步:理解“最近点”的含义

    对于集合 {x1,x2,,xn}\{x_1, x_2, \dots, x_n\},点 xjx_j 的最近点可能是:

    • 它左边的邻居 xj1x_{j-1}(如果存在);
    • 它右边的邻居 xj+1x_{j+1}(如果存在);
    • 或者两者距离相等时,两个都是最近点。

    我们要加一个新点 yy(整数,且 y{xi}y \notin \{x_i\}),使得对每个 iiyyxix_i 的最近点。

    这意味着:对于每个 xix_iyyxix_i 的距离 严格小于 xix_i 到任何其它原有邻居的距离。


    第二步:考虑端点的约束

    对于最左点 x1x_1

    它的原有点中,最近候选是 x2x_2(距离 d=x2x1d = x_2 - x_1)。
    要使 yyx2x_2 更靠近 x1x_1,必须满足:

    yx1<x2x1|y - x_1| < x_2 - x_1

    因为 yy 是整数,且 x2x1x_2 - x_1 是整数,这个不等式的整数解是:

    $$y \in [x_1, x_1 + (x_2 - x_1 - 1)] \quad \text{且} \quad y \neq x_1 $$

    更简单写成:

    yx1+(x2x11)=x21y \le x_1 + (x_2 - x_1 - 1) = x_2 - 1

    yx1+1y \ge x_1 + 1(因为 yy 是整数且 yx1y \neq x_1)。

    所以:

    x1<yx21x_1 < y \le x_2 - 1

    这是对 yy 的第一个约束。


    对于最右点 xnx_n

    原有点中最近候选是 xn1x_{n-1}(距离 d=xnxn1d = x_n - x_{n-1})。
    要使 yyxn1x_{n-1} 更靠近 xnx_n,必须满足:

    yxn<xnxn1|y - x_n| < x_n - x_{n-1}

    整数解为:

    xn1+1y<xnx_{n-1} + 1 \le y < x_n

    即:

    xn1+1yxn1x_{n-1} + 1 \le y \le x_n - 1

    第三步:合并两端点的约束

    同时满足:

    x1<yx21x_1 < y \le x_2 - 1 xn1+1yxn1x_{n-1} + 1 \le y \le x_n - 1

    取交集,必须存在整数 yy 满足:

    $$\max(x_1 + 1,\; x_{n-1} + 1) \le y \le \min(x_2 - 1,\; x_n - 1) $$

    并且 yy 不能等于任何已有的 xix_i


    第四步:中间点的约束

    对于中间的 xix_i2in12 \le i \le n-1),它左右都有邻居 xi1x_{i-1}xi+1x_{i+1}
    要让 yy 比这两个邻居都更靠近 xix_i,需要同时满足:

    yxi<xixi1|y - x_i| < x_i - x_{i-1} yxi<xi+1xi|y - x_i| < x_{i+1} - x_i

    这意味着 yy 必须落在 xix_i 的两侧的一个小邻域内,且比两个邻居都近。
    但注意:xix_i 的左右邻居本身就是点集中的点,如果 yyxix_i 比它们都近,那么 yy 必须夹在 xix_i 和最近邻居之间。
    这其实要求:xix_i 到左边邻居的距离 >1> 1xix_i 到右边邻居的距离 >1> 1,并且 yy 取那个较大间隙中的某个整数。

    关键观察:如果 n>2n > 2,那么 x2x_2 的左边邻居是 x1x_1,右边邻居是 x3x_3
    要让 yy 同时比 x1x_1x3x_3 更靠近 x2x_2,必须:

    $$|y - x_2| < x_2 - x_1 \quad \text{且} \quad |y - x_2| < x_3 - x_2 $$

    yy 必须在 x2x_2 的一个小邻域内,但这个邻域半径小于 min(x2x1,x3x2)\min(x_2 - x_1, x_3 - x_2)
    然而,这个邻域内除了 x2x_2 本身,可能没有任何整数点,尤其是当 x2x1=1x_2 - x_1 = 1x3x2=1x_3 - x_2 = 1 时,没有整数可以插入。

    实际上,如果 n3n \ge 3,几乎不可能,因为 x2x_2 的两边至少一边距离为 11(因为点是整数且递增,间距至少为 11),这样 yy 不可能同时比两个邻居更近。


    第五步:结论推导

    我们列举所有可能:

    1. n>2n > 2
      考虑 x2x_2,它与 x1x_1 的距离至少为 11,与 x3x_3 的距离至少为 11
      要让 yyx1x_1 更靠近 x2x_2,必须 yx2<x2x1x2(x21)=1|y - x_2| < x_2 - x_1 \le x_2 - (x_2 - 1) = 1(最坏情况)。
      yx2<1|y - x_2| < 1,而 yy 是整数且不等于 x2x_2,不可能。
      所以 n>2n > 2 时无解。

    2. n=2n = 2
      约束为:

      x1<yx21x_1 < y \le x_2 - 1 x1+1y<x2x_1 + 1 \le y < x_2

      取交集:

      x1+1yx21x_1 + 1 \le y \le x_2 - 1

      存在整数 yy 的条件是:

      $$x_1 + 1 \le x_2 - 1 \quad \Rightarrow \quad x_2 - x_1 \ge 2 $$

      即两点距离至少为 22
      此时可取 y=x1+1y = x_1 + 1y=x21y = x_2 - 1,都能同时成为两点的最近点。

    3. n=2n = 2x2x1=1x_2 - x_1 = 1
      没有整数 yy 满足 x1<y<x2x_1 < y < x_2,所以无解。


    第六步:最终答案

    结论

    • n=2n = 2x2x1>1x_2 - x_1 > 1 时,输出 YES
    • 否则输出 NO

    第七步:公式总结

    $$\text{答案} = \begin{cases} \text{YES}, & \text{if } n = 2 \text{ and } x_2 - x_1 > 1 \\ \text{NO}, & \text{otherwise} \end{cases} $$

    第八步:复杂度分析

    • 每个测试用例只需 O(1)O(1) 时间判断,总复杂度 O(t)O(t)
    • 空间复杂度 O(1)O(1)
    • 1

    信息

    ID
    7205
    时间
    1000ms
    内存
    256MiB
    难度
    4
    标签
    递交数
    1
    已通过
    1
    上传者