AT_joi2019ho_d コイン集め (Coin Collecting)

题目描述

在 JOI 氏的收藏室中,有一张巨大的桌子,上面放满了珍贵的硬币。为了清理这张桌子,JOI 氏决定要整理这些硬币,把它们排列整齐。 桌面的大小是 $2\,000\,000\,001 \times 2\,000\,000\,001$,形成一个庞大的网格。列从左到右的编号为 $-1\,000\,000\,000$ 到 $1\,000\,000\,000$,行从下到上的编号为 $-1\,000\,000\,000$ 到 $1\,000\,000\,000$。我们用 $(x, y)$ 表示网格中列号为 $x$,行号为 $y$ 的位置。 桌子上一共有 $2N$ 枚硬币,现在第 $i$ 枚硬币 ($1 \leq i \leq 2N$) 位于位置 $(X_i, Y_i)$。JOI 氏的目标是将这些硬币放到网格左上角的一个小方块中,每个格子恰好放一个。这个小方块由 $(x, y)$ 表示,其中 $1 \leq x \leq N$ 且 $1 \leq y \leq 2$。 为了避免损坏硬币,仅能进行以下操作:选择一枚硬币,并将它移动到与其当前所在位置相邻的另一个格子(即共享一条边的格子)。移动过程中,可以暂时将多个硬币堆叠在一起。JOI 氏希望用尽量少的操作次数实现目标。 现在,给出硬币的数量和它们的初始位置,请编写一个程序,计算用最少多少次操作可以将硬币移到目标位置。

输入格式

从标准输入中读取数据,格式如下: > $N$ $X_1$ $Y_1$ $\vdots$ $X_{2N}$ $Y_{2N}$

输出格式

输出一行,表示达成目标位置所需的最小操作次数。

说明/提示

- 条件限制: - $1 \leq N \leq 100\,000$。 - $-1\,000\,000\,000 \leq X_i \leq 1\,000\,000\,000$ ($1 \leq i \leq 2N$)。 - $-1\,000\,000\,000 \leq Y_i \leq 1\,000\,000\,000$ ($1 \leq i \leq 2N$)。 - 子任务: 1. (8 分)$N \leq 10$。 2. (29 分)$N \leq 1\,000$。 3. (63 分)没有其他额外的约束条件。 ### 示例说明 1 在这个例子中,6 枚硬币的初始位置如下图所示:![2019-ho-t4-fig01.png](https://img.atcoder.jp/joi2019ho/2019-ho-t4-fig01.png) 我们的目标是将硬币移到粗框标记的区域。例如,通过以下路径移动硬币,可以在 15 次操作后实现目标: - 第 1 枚硬币:$(0, 0) \rightarrow (1, 0) \rightarrow (1, 1) \rightarrow (1, 2)$ - 第 2 枚硬币:$(0, 4) \rightarrow (1, 4) \rightarrow (1, 3) \rightarrow (2, 3) \rightarrow (3, 3) \rightarrow (3, 2)$ - 第 3 枚硬币:$(4, 0) \rightarrow (4, 1) \rightarrow (3, 1)$ - 第 5 枚硬币:$(2, 5) \rightarrow (2, 4) \rightarrow (2, 3) \rightarrow (2, 2)$ - 第 6 枚硬币:$(-1, 1) \rightarrow (0, 1) \rightarrow (1, 1)$ 无法在 14 次或更少的操作内达成目标,因此输出为 15。 ### 示例说明 2 注意,移动过程中可能会有多个硬币暂时放在同一个格子中。 **本翻译由 AI 自动生成**