#P10825. [EC Final 2020] Circle

[EC Final 2020] Circle

Description

庞教授研究最小覆盖圆问题。他不喜欢随机算法,所以决定寻找一个高效的确定性算法。他从经典的二分查找思想开始。在每次二分查找的迭代中,需要解决以下问题:

给定一个圆的半径 rr 和一个凸包 CC,定义 SS

$$S=\{p\ |\ \text{以 $p$ 为圆心,半径为 $r$ 的圆覆盖 $C$ 的所有点}\}.$$

SS 的面积。

Input Format

第一行包含一个正整数 TT,表示测试用例的数量。

对于每个测试用例,第一行包含两个整数 nnrr (1n10001\le n\le 1000, 1r300001\le r\le 30000),用一个空格分隔,表示凸包的顶点数和半径。如果 n=1n=1,则凸包仅包含 1 个点。如果 n=2n=2,则凸包为一条线段。

接下来的 nn 行中的每一行包含两个整数 x,yx, y (10000x,y10000-10000\le x, y\le 10000),用一个空格分隔,表示一个顶点的坐标 (x,y)(x, y)。保证没有两个顶点重合,且没有三个顶点共线。顶点按逆时针顺序列出。

保证所有测试用例中 nn 的总和不超过 200000200000

Output Format

输出一个小数表示答案。如果绝对误差或相对误差不超过 10610^{-6},则你的答案将被视为正确。

3
4 1
0 0
1 0
1 1
0 1
4 1
0 0
1 1
0 2
-1 1
4 100
0 0
1 0
1 1
0 1
0.315146743628
0
31016.928202570849

Hint

(由 ChatGPT 4o 翻译)