2527.坐标点圆密度计算

通过数:8提交数:12学校:苏州大学保研机试真题 题目列表 标签
坐标点圆覆盖与点密度计算 题目描述 给定一行整数序列,依次将相邻两个整数作为一对,构造二维坐标点。 例如:输入序列 12 34 53 25 61 28 78 可得到 6 个坐标点: $$ (12,34),\,(34,53),\,(53,25),\,(25,61),\,(61,28),\,(28,78) $$ 定义以每个点为圆心的圆,半径取为该点与下一个点之间的欧氏距离。最后一个点的半径取与第一个点的距离。 若点 $P i=(x i,y i)$,点 $P {i+1}=(x {i+1},y {i+1})$,则圆心为 $P i$,半径为: $$ r i=\sqrt{(x {i+1}-x i)^2+(y {i+1}-y i)^2} $$ 对最后一个点 $P n$,半径为: $$ r n=\sqrt{(x 1-x n)^2+(y 1-y n)^2} $$ 定义 包含关系 :若某点 $Q$ 满足 $\text{dist}(Q,P i)\le r i$,则认为该点落在圆 $C i$ 内(边界算内)。圆心自身一定被包含。 每个圆的 点数 :圆内(含边界)坐标点的个数。 每个圆的 点密度 : $$ \text{density} i = \frac{\text{count} i}{\pi r i^2},\quad \pi=3.14 $$ 输出要求 请计算所有圆的点密度,并输出点密度值最大的前 5 个圆(若不足 5 个圆则全部输出)。 排序规则 : 1. 按点密度从大到小排序; 2. 若点密度相同,则按包含点数从大到小; 3. 若仍相同,则按圆心在输入序列中出现的先后顺序。 输出格式 :每行一个圆,格式如下: (x, y) c ddd.dd 其中: (x, y) 为圆心坐标, 逗号后有一个空格 ; c 为整数,表示该圆包含的点数; ddd.dd 为点密度, 四舍五入保留 6 位小数 ,不足两位补零; 各字段间仅一个空格,不得输出额外文字、表头或空行。 输入格式 输入仅一行,为若干整数(≥2),以空格分隔。 输出格式 至多 5 行,每行满足上述格式。 边界说明 1. 若输入整数少于 2 个,无法构成坐标点,输出为空。 2. 若某圆半径为 0(相邻点相同),定义其点密度为 0;包含点数按“≤半径”计算(至少包含圆心一个)。 3. 计算包含关系时建议使用平方比较并加微小误差避免浮点误差。 4. 排序时比较密度用真实值,输出时才四舍五入。 样例 输入: 12 34 53 25 61 28 78 输出: (12, 34) 4 0.10 (34, 53) 3 0.08 (53, 25) 4 0.07 (25, 61) 2 0.06 (61, 28) 3 0.05
C
补全
点击调试按钮即可调试代码。

点击提交按钮即可提交代码。