#joi2019hod. [joi2019ho_d]コイン集め (Coin Collecting)

[joi2019ho_d]コイン集め (Coin Collecting)

目标达成的最小操作次数

给定硬币的数量和当前硬币所在的位置,编写程序以确定达到目标所需的最小操作次数。

输入

输入以以下格式从标准输入中提供:

NN X1X_1 Y1Y_1 \vdots X2NX_{2N} Y2NY_{2N}

输出

在标准输出中以1行输出为目标所需的最小操作次数。

约束

  • 1N100,0001\leq N\leq 100,000
  • 1,000,000,000Xi1,000,000,000-1,000,000,000\leq X_i\leq 1,000,000,000 (1i2N1\leq i\leq 2N)。
  • 1,000,000,000Yi1,000,000,000-1,000,000,000\leq Y_i\leq 1,000,000,000 (1i2N1\leq i\leq 2N)。

子任务

  1. (88 分) N10N\leq 10
  2. (2929 分) N1,000N\leq 1,000
  3. (6363 分) 没有附加约束。

示例输入 1

3
0 0
0 4
4 0
2 1
2 5
-1 1

示例输出 1

15

在此示例中,存在6个硬币并且它们被放置在下图所示的位置上。目标是将硬币收集到用粗线框示的位置。

2019-ho-t4-fig01.png

例如,可以通过以下方式移动硬币来在 15 步操作内实现目标:

  • 第1个硬币:(0,00, 0) → (1,01, 0) → (1,11, 1) → (1,21, 2)
  • 第2个硬币:(0,40, 4) → (1,41, 4) → (1,31, 3) → (2,32, 3) → (3,33, 3) → (3,23, 2)
  • 第3个硬币:(4,04, 0) → (4,14, 1) → (3,13, 1)
  • 第5个硬币:(2,52, 5) → (2,42, 4) → (2,32, 3) → (2,22, 2)
  • 第6个硬币:(1,1-1, 1) → (0,10, 1) → (1,11, 1)

无法在14步或更少的操作中实现目标,因此输出15。

示例输入 2

4
2 1
2 1
2 1
3 1
3 1
3 1
3 1
3 1

示例输出 2

9

同一个位置可能放置多个硬币。

示例输入 3

5
1000000000 1000000000
-1000000000 1000000000
-1000000000 -1000000000
1000000000 -1000000000
-1 -5
-2 2
2 8
4 7
-2 5
7 3

示例输出 3

8000000029