题号:NC201836
时间限制:C/C++/Rust/Pascal 2秒,其他语言4秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
Special Judge, 64bit IO Format: %lld
题目描述
给出

个点求他们的凸包是一个经典问题,所以出了一道稍微难一点的题。
给出平面上

个圆,第

个圆的圆心是
)
,半径是

。定义这

个点的凸包为所有满足以下条件的点

形成的区域:存在点

和常数

满足 A,B 都在某个圆的内部(所在的圆可以不同)且
%20B)
。换句话说,这

个点的凸包等于这

个圆内部的所有点形成的凸包。
现在给出这

个圆,试求这

个圆形成的凸包的周长。
输入描述:
第一行输入一个整数
表示数据组数。
每组数据的第一行是一个整数
表示圆的个数。
接下来 n 行每行三个整数
,描述了一个圆。
输出描述:
对每组数据输出一行一个实数,表示周长。你的答案会被视为正确当且仅当相对误差或者绝对误差不超过
。
示例1
输入
复制
3
2
0 0 1
1 0 1
4
0 0 1
0 1 1
1 0 1
1 1 1
5
0 0 1
2 2 1
0 2 1
2 0 1
1 1 2
输出
复制
8.28318530718
10.28318530718
14.28318530718