#P16165. [Ncpc2024]Fence Fee围栏补贴

[Ncpc2024]Fence Fee围栏补贴

题目描述

国家农作物保护委员会(NCPC)会按照农田面积向当地农民发放补贴。

每位农民可能拥有若干块农田。每块农田都是一个多边形区域,由若干围栏线段围成;围栏只会在端点处相交。

为了鼓励形状更规整、包围效果更好的农田,NCPC 决定按每块农田面积的平方发放补贴。现在需要编写一个工具,计算所有由围栏形成的农田区域的面积平方和。

输入格式

第一行包含一个整数 FF,表示围栏线段数量。

接下来 FF 行,每行包含四个整数 x1,y1,x2,y2x_1,y_1,x_2,y_2,表示一段从 (x1,y1)(x_1,y_1)(x2,y2)(x_2,y_2) 的直线围栏。

保证:

  • 任意两条围栏线段不会相交,除非在公共端点处相接;
  • 每一段围栏都是必要的,并且都用于围成农田;
  • 所有围栏连通;
  • 换言之,由端点和围栏构成的图是平面连通图,且没有桥。

输出格式

输出一个实数,表示所有农田区域的面积平方和。

若你的答案与标准答案的绝对误差或相对误差不超过 10610^{-6},则认为正确。

数据范围

  • 3F10003 \le F \le 1000
  • 0x1,y1,x2,y210000 \le x_1,y_1,x_2,y_2 \le 1000

样例说明

原题中的图表示样例 2。两块农田的面积分别为 110.50.5,因此面积平方和为:

12+0.52=1.251^2 + 0.5^2 = 1.25。

样例 2 示意图

样例

输入 #1

5
0 0 0 1
0 1 1 1
0 0 1 0
1 0 2 0
1 1 2 0

输出 #1

2.25

输入 #2

6
0 0 0 1
0 1 1 1
0 0 1 0
1 0 2 0
1 1 2 0
1 0 1 1

输出 #2

1.25