P10859 [HBCPC2024] Nana Likes Polygons
题目描述
娜娜的电子宠物 MACARON 喜欢在房间里四处走动。娜娜想要创建一个有界区域,让 MACARON 可以在其中活动。
房间中的位置可以用二维坐标系表示,娜娜提供了一组顶点。娜娜喜欢多边形,现在想选择一个顶点的子集,形成一个凸多边形的端点。然而,娜娜还希望确保选择的区域不要太大。
因此,她将确定以给定顶点的子集为端点的凸多边形的最小可能面积。如果不存在这样的凸多边形,请输出 `-1`(不带引号)。
输入格式
第一行包含一个整数 $T (1 \leq T \leq 10)$ —— 测试用例的数量。
对于每个测试用例,第一行包含一个整数 $n (1 \leq n \leq 100)$ —— 给定顶点的数量。
接下来的 $n$ 行每行包含两个整数,第 $i$ 行包含 $x_i, y_i (-1000 \leq x_i, y_i \leq 1000)$ —— 第 $i$ 个顶点的坐标。
输出格式
对于每个测试用例,如果不存在这样的凸多边形,请输出 `-1`(不带引号);否则输出一个实数,表示以这些给定顶点为端点的凸多边形的最小可能面积。
设 $a$ 和 $b$ 分别表示答案和你的输出。如果 $b$ 的绝对误差或相对误差不超过 $10^{-6}$,你的输出将被接受。形式上,如果且仅如果 $\dfrac{|a-b|}{\max(a,b)} \leq 10^{-6}$,你的输出才会被接受。
说明/提示
对于第一个测试用例,选择 $(2, 2), (-3, 0)$ 和 $(0, 2)$ 作为一个凸多边形的端点,其面积为 2。可以证明这是该情况下的最小面积。
对于第二个测试用例,这三个顶点无法形成凸多边形。(由 ChatGPT 4o 翻译)