#P9845. [ICPC 2021 Nanjing R] Paimon Polygon

    ID: 9202 远端评测题 2000ms 256MiB 尝试: 0 已通过: 0 难度: 9 上传者: 标签>计算几何2021Special JudgeO2优化凸包ICPC南京

[ICPC 2021 Nanjing R] Paimon Polygon

Description

派蒙在平面上放置了n+1n+1个互异的点,其中有一特殊点O=(0,0)O=(0,0),并记其余点为S\mathbb{S}

我们称一个点集 U\mathbb{U}strict convex set\textit{strict convex set},当且仅当点集中点的个数大于等于3(U3|\mathbb{U}| \ge 3)且U\mathbb{U}中的所有点位于U\mathbb{U}构成的凸包上,且任意三点不共线。

你需要将S\mathbb{S}划分为两个集合 A\mathbb{A}B\mathbb{B},使其满足

  • AB=\mathbb{A} \cap \mathbb{B}=\emptyset.

  • AB=S\mathbb{A} \cup \mathbb{B}=\mathbb{S}.

  • A2,B2|\mathbb{A}| \ge 2, |\mathbb{B}| \ge 2.

  • 点集 A{O}\mathbb{A} \cup \{O\}strict convex set\textit{strict convex set},并记它的凸包为CA{O}C_{\mathbb{A} \cup \{O\}}

  • 点集 B{O}\mathbb{B} \cup \{O\}strict convex set\textit{strict convex set},并记它的凸包为 CB{O}C_{\mathbb{B} \cup \{O\}}

  • CA{O}C_{\mathbb{A} \cup \{O\}}CB{O}C_{\mathbb{B} \cup \{O\}} 的轮廓 仅在 OO相交。 这也就是说,仅有点OO既在CA{O}C_{\mathbb{A} \cup \{O\}}的轮廓上,又在CB{O}C_{\mathbb{B} \cup \{O\}}的轮廓上。

请协助派蒙计算出这两个凸包周长之和的最大值。 这也就是说,找到一个合法的划分方案A\mathbb{A}B\mathbb{B},使得 $(L(C_{\mathbb{A} \cup \{O\}}) + L(C_{\mathbb{B} \cup \{O\}}))$最大,其中L(polygon)L(\text{polygon})代表多边形的周长。

Input Format

多组测试数据,第一行给出数据组数 TT

第一行给出一个整数 nn (4n5×1054 \le n \le 5 \times 10^5) ,表示 S\mathbb{S} 中点的个数。

接下来nn行,第ii行 包含两个整数 xix_iyiy_i (109xi,yi109-10^9 \le x_i, y_i \le 10^9, (xi,yi)(0,0)(x_i, y_i) \ne (0, 0)) 表示 S\mathbb{S} 中第 ii个点的坐标。

保证同一组测试数据中的点互异,但可能存在三点共线。

保证 所有测试数据中nn之和不超过 10610^6.

Output Format

每组测试数据单起一行输出一个整数,表示两个凸包的周长之和的最大值。如不存在合法的划分方案,输出0。 与标准答案的相对或绝对误差小于 10610^{-6}的答案会被视作正确答案。

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

17.2111025509
36.6326947621
0.0000000000