atcoder#AGC019C. [AGC019C] Fountain Walk

[AGC019C] Fountain Walk

分数 : 900900

问题陈述

在 Nevermore 城市,有 10810^8 条街道和 10810^8 条大道,编号从 00108110^8-1。所有街道从西向东笔直延伸,所有大道从南向北笔直延伸。相邻街道和相邻大道之间的距离恰好为 100100 米。

每条街道与每条大道相交。每个交点可以用对 (x,y)(x, y) 来描述,其中 xx 是大道 ID,yy 是街道 ID。

城市中有 NN 个喷泉,位于交点 (Xi,Yi)(X_i, Y_i)。与普通交点不同的是,喷泉的交点中心有一个半径为 1010 米的圆,且该圆内没有道路部分。

下面的图片展示了城市部分区域的道路和喷泉可能的样子。

1f931bf0c98ec6f07e612b0282cdb094.png

城市管理者不喜欢在同一条道路上遇到多个喷泉。因此,每条街道和每条大道上最多只能有一个喷泉。

市民可以沿着街道、大道和喷泉周边移动。要从交点 (x1,y1)(x_1, y_1) 到达交点 (x2,y2)(x_2, y_2),需要覆盖的最短距离是多少?

约束条件

  • 0x1,y1,x2,y2<1080 \leq x_1, y_1, x_2, y_2 < 10^8
  • 1N200,0001 \leq N \leq 200,000
  • 0Xi,Yi<1080 \leq X_i, Y_i < 10^8
  • XiXjX_i \neq X_j,当 iji \neq j
  • YiYjY_i \neq Y_j,当 iji \neq j
  • 交点 (x1,y1)(x_1, y_1)(x2,y2)(x_2, y_2) 不同且不包含喷泉。
  • 所有输入值均为整数。

输入

输入来自标准输入,格式如下:

x1x_1 y1y_1 x2x_2 y2y_2

NN

X1X_1 Y1Y_1

X2X_2 Y2Y_2

::

XNX_N YNY_N

输出

打印从交点 (x1,y1)(x_1, y_1) 到交点 (x2,y2)(x_2, y_2) 所需覆盖的最短距离,以米为单位。若答案的绝对误差或相对误差不超过 101110^{-11},则视为正确。

1 1 6 5
3
3 2
5 3
2 4
891.415926535897938

一种可能的最短路径如下面的图片所示。路径从蓝色点开始,到达紫色点,并沿着红色线行进。

c49e52b9b79003f61b8a6efa5dad8ba3.png

3 5 6 4
3
3 2
5 3
2 4
400.000000000000000

f9090ab734c89424c413f3b583376990.png

4 2 2 2
3
3 2
5 3
2 4
211.415926535897938

4b76416161f27cad20333a9ac636e00f.png