AT_tupc2024_g.Convex Hull of Intersections

通过率:0%

AC君温馨提醒

该题目为【atcoder】题库的题目,您提交的代码将被提交至atcoder进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

在 xyxy 平面上有 NN 条互不相同的直线,第 ii 条直线 ℓi\ell_i 可以表示为 aix+biy+ci=0a_i x + b_i y + c_i = 0 的形式。所有这些直线的交点的集合记为 PP。更严格地说,定义如下:

P={p∈R2∣∃ i,j∈{1,2,…,N} 且 i≠j, p∈ℓi, p∈ℓj}P = \left\{ p \in \mathbb{R}^2 \mid \exists \, i, j \in \{1, 2, \ldots, N\} \text{ 且 } i \neq j, \, p \in \ell_i, \, p \in \ell_j \right\}

请计算 PP 的凸包的面积。如果凸包为空集、只有一个点或是一条线段,则认为面积为 00。

凸包的定义
有限集合 S={x1,…,x∣S∣}S = \{ x_1, \ldots, x_{|S|} \} 的凸包 conv(S)\text{conv}(S) 定义如下:

conv(S)={∑i=1∣S∣αixi | ∑i=1∣S∣αi=1,  0≤αi≤1}\text{conv}(S) = \left\{ \sum_{i=1}^{|S|} \alpha_i x_i \,\middle|\, \sum_{i=1}^{|S|} \alpha_i = 1, \; 0 \leq \alpha_i \leq 1 \right\}

给定 TT 组测试数据,请分别给出每组的答案。

输入格式

输入按以下格式从标准输入读入。

TT
case1\text{case}_1
case2\text{case}_2
⋮\vdots
caseT\text{case}_T

其中,casei\text{case}_i 表示第 ii 个测试用例,每个测试用例的格式如下:

NN
a1a_1 b1b_1 c1c_1
a2a_2 b2b_2 c2c_2
⋮\vdots
aNa_N bNb_N cNc_N

输出格式

输出 TT 行,第 ii 行输出第 ii 个测试用例的答案。

当且仅当你的答案与标准答案在绝对误差或相对误差不超过 10−510^{-5} 时,会被判定为正确。

输入输出样例

  • 输入#1

    3
    4
    1 -1 -2
    3 3 -6
    -1 2 -4
    1 2 4
    3
    3 0 5
    5 0 18
    1 0 7
    3
    314 159 -1
    313 158 -1000
    315 160 999

    输出#1

    72.0
    0
    0.0016129032

说明/提示

样例解释 1

第 11 个测试用例中,PP 的凸包是依次连接 (8,6),(−4,0),(8,−6)(8, 6), (-4, 0), (8, -6) 形成的三角形,其面积为 7272。

第 22 个测试用例,三条直线均互相平行,因此 P=∅P = \emptyset。所以 PP 的凸包面积为 00。


数据范围

  • 1≤T1 \leq T
  • 2≤N≤1042 \leq N \leq 10^4
  • ∣ai∣,∣bi∣,∣ci∣≤103|a_i|, |b_i|, |c_i| \leq 10^3
  • 至少有一个 ai≠0a_i \neq 0 或 bi≠0b_i \neq 0
  • 任意 i≠ji \neq j,直线 ℓi\ell_i 与 ℓj\ell_j 不相同
  • 同一份输入文件中所有 NN 的总和不超过 2×1052 \times 10^5
  • 输入均为整数

由 ChatGPT 5 翻译

输入解题思路,AI测评打分。不知道怎么写?

首页