Logo HelloWorld信息学奥赛题库

少儿编程

时间限制:1 s 空间限制:256 MB

#3637. 「JOISC 2018 Day 1」栅栏

Statistics

题目描述

译自 JOISC 2018 Day1 T2「 / Fences

JOI 君在 IOI 国拥有广阔的土地。

IOI 国的土地可以表示为一个平面直角坐标系。他的土地为坐标系上 $x,y$ 坐标满足 $x \in [-10^{100}\, , \, 10^{100}] \, , \, y \in [-10^{100}\, , \, 10^{100}]$ 的区域。他的牧场是在坐标系上 $x,y$ 满足 $x \in [-S\, , \, S] \, , \, y \in [-S\, , \, S]$ 的区域。

JOI 君要在牧场里修一些栅栏,来把牧场围起来,使得他的牛不可能从牧场内的任何一点走到他的土地之外。栅栏是一条长度为正实数的线段。牧场里已经有一些栅栏了。两个栅栏之间如果有共同点,那么它必然是至少一个的栅栏的端点。

JOI 君可以随意建栅栏。要求栅栏既不在牧场内,也不在 JOI 君的土地外,它们的长度任意,方向任意。他甚至可以修一条将整个牧场全围起来的栅栏。建造一条长度为 $l$ 的栅栏的费用是 $l$。两条栅栏可以相交,重合...... 怎么修都没问题(可参考样例)。

请你计算修栅栏的最小费用。

输入格式

第一行为整数 $N$ 和 $S$。

第 $i$ 行 $(1\le i \le N)$ 为四个整数 $A_i,B_i,C_i,D_i$ ,代表有一条连接点 $(A_i,B_i)$ 和点 $(C_i,D_i)$ 的栅栏。

输出格式

输出修栅栏的最小费用。

我们将会使用 SPJ。被允许的最大精度误差为 $0.01$。

样例 1

input

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

output

29.0000000000

已经建好的栅栏见左图,点线为牧场的边界。

一种修栅栏的方法见右图。如果你输出 $29$ 或 $28.999$ 也对。 PIC

样例 2

input

1 2
-3 -3 -3 -2

output

16.0000000000

你根本用不到之前修好的任何栅栏。

样例 3

input

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

output

14.1392801789

样例 4

input

10 80
175 95 60 -146
-106 57 18 185
190 -68 177 -142
84 -195 127 -179
34 143 126 69
-92 133 -190 80
-157 -66 -119 -161
-85 -124 129 -171
141 181 175 175
107 -38 150 148

output

238.4778364511

数据范围与提示

数据满足以下条件:

  • $1 ≤ N ≤ 100 $.
  • $1 ≤ S ≤ 200$.
  • $ −200 ≤ A_i, B_i, C_i, D_i ≤ 200\, (1 ≤ i ≤ N)$.
  • $(A_i, B_i) \ne (C_i, D_i)\, (1 ≤ i ≤ N)$.
  • 没有栅栏经过牧场内部。
  • 任意两个不同的栅栏,如果他们有公共点,那至少是一个栅栏的端点。

子任务 1(18 分)

$N=1$。

子任务 2(33 分)

$N\le 6$。

子任务 3(49 分)

没有额外限制。