SP418 NECKLACE - Necklace

题目描述

在平面上有 **N** 个点,每个点的坐标为 (**x $_{i}$**, **y $_{i}$**)。我们想要构造一个包含 **N** 个图形的集合,我们称这个集合为「项链」。为了满足项链的条件,需要满足以下规则: - 每个图形 **#i** 表示一个以点 (**x $_{i}$**, **y $_{i}$**) 为圆心,半径为 **r $_{i}$** 的圆,所有点 (**x**, **y**) 满足 (**x** - **x $_{i}$**)$^2$ + (**y** - **y $_{i}$**)$^2$ ≤ **r $_{i}$**$^2$。 - 图形 **#i** 必须与图形 **#(i+1)** 相交(1 ≤ **i** < **N**)。 - 图形 **#1** 必须与图形 **#N** 相交。 - 其余任意两图形之间都不能相交。 编写程序,给定点的坐标后,构造这样一个项链。

输入格式

第一行输入一个整数 **t**,表示测试用例的个数 (1 ≤ **t** ≤ 45)。接下来是 **t** 组测试用例。 每个测试用例的第一行是一个整数 **N** (2 ≤ **N** ≤ 100),后接 **N** 行,每行包含两个实数 **x $_{i}$**, **y $_{i}$** (-1000 ≤ **x $_{i}$**, **y $_{i}$** ≤ 1000),以空格分隔。保证对于每个用例,至少存在一种满足条件的项链。

输出格式

对于每个测试用例,输出 **N** 行,每行一个实数 **r $_{i}$**,表示相应图形的半径 (0 ≤ **r $_{i}$** < 10000)。为了避免精度问题,请使用下述规则: - 当 **r $_{i}$** + **r $_{j}$** ≤ **d $_{ij}$** - 10$^{-5}$ 时,表示图形 **#i** 和 **#j** 一定不相交。 - 当 **d $_{ij}$** + 10$^{-5}$ ≤ **r $_{i}$** + **r $_{j}$** 时,表示图形 **#i** 和 **#j** 一定相交。 - 对于 **d $_{ij}$** - 10$^{-5}$ < **r $_{i}$** + **r $_{j}$** < **d $_{ij}$** + 10$^{-5}$ 的情况,将按照有利于参赛者的方向判定。 - 其中 **d $_{ij}$** 表示两个图形圆心之间的距离,等于 $\sqrt{(\textbf{x} _\textbf{i} - \textbf{x} _\textbf{j}) ^2 + (\textbf{y} _\textbf{i} - \textbf{y} _\textbf{j}) ^2}$。 **本翻译由 AI 自动生成**