0%

CF2136D For the Champion

题意简述

这是一个交互式问题。RiOI 团队正在举办一场机器人锦标赛!这一次,你的机器人被传送到一个带有笛卡尔坐标系的无限二维平面上。平面上有 $n$ 个锚点,第 $i$ 个锚点的坐标为 $(x_i, y_i)$,其中 $-10^9 \leq x_i, y_i \leq 10^9$。这些坐标在机器人被传送到平面上时由评审团提供。然而,你的机器人一开始并不知道它的初始坐标。

为了测试你机器人的智商,RiOI 团队设计了一个有趣的游戏。你的机器人需要通过以下的操作找出它的初始坐标 $(X,Y)$,其中 $-10^9 \leq X,Y \leq 10^9$。

在一次操作中,假设当前坐标为 $(a,b)$,你的机器人可以选择一个非负整数 $k$,其中 $0 \leq k \leq 10^9$,并执行以下四种操作之一:

  • 向上移动 $k$ 个单位,即移动到 $(a, b+k)$;
  • 向下移动 $k$ 个单位,即移动到 $(a, b-k)$;
  • 向左移动 $k$ 个单位,即移动到 $(a-k, b)$;
  • 向右移动 $k$ 个单位,即移动到 $(a+k, b)$。

每次移动之后,评审团会给出机器人当前位置与任意一个锚点的最小曼哈顿距离。更准确地说,假设机器人移动后的坐标是 $(c,d)$,那么评审团会输出 $\min\limits_{1 \leq i \leq n} (|x_i - c| + |y_i - d|).$

为了赢得奖品,你必须证明你的机器人拥有很高的智商。因此,你需要为机器人编写一个程序,使它能在不超过 $10$ 次操作内找到它的初始坐标 $(X,Y)$。

思路分析

看到这种绝对值,其实可以考虑如何去掉绝对值。

如果能确保机器人目前位置一定在所有目标点的某一个方向,那绝对值就能去掉了。

比如说,令机器人左移 $2 \times 10^9$ 个单位再上移 $2 \times 10^9$ 个单位,就能保证机器人位于所有点的左上角。

令 $M = 10^9$.

那么此时的最小距离即为 $\min\limits_{1 \leq i \leq n}(x_i - (X-2M) + (Y+2M) - y_i)$。

稍作化简可得 $-X + Y + \min\limits_{1\leq i \leq n}(x_i - y_i) + 4M$。这个值记作 $D_1$。

同理,如果在目前的左上角这个位置再向右移 $4 \times 10^9$ 个单位,就能保证机器人位于所有点的右上角。

那么此时的最小距离即为 $\min\limits_{1 \leq i \leq n}((X+2M) - x_i + (Y+2M) - y_i)$。

稍作化简可得 $X + Y - \max\limits_{1\leq i \leq n}(x_i + y_i) + 4M$。这个值记作 $D_2$。

记 $d1 = \min\limits{1\leq i \leq n}(xi - y_i)$, $d_2 = \max\limits{1\leq i \leq n}(x_i + y_i)$。

这两个值都很好求,排序一遍就可以了。

那么 $Y = \dfrac{D_1 + D_2 - d_1 + d_2 - 8M}{2}$, $X = \dfrac{-D_1 + D_2 + d_1 + d_2}{2}$。

共移动 $8$ 次。

总结

一种经验吧。想办法去绝对值后化简。利用对称性。