开发者社区> 问答> 正文

遇到一个能量半径问题,求解答。

codancer来到了一个能量平面上的中心,坐标为(0,0),接下来巫师Tom会在 q 个坐标上放置能量点,每个能量点的能量值为 1,为了打败哥斯拉,他需要至少k 点的能量,因此他想确定一个最小的整数半径 r 使得 codancer 能够从这个圆心为(0,0),半径为 r 的圆形区域内得到至少 k 个能量值,请你帮他确定最小的整数半径 r。输入包含三个部分,第一个输入能量点的个数q(1<=q<=100000),第二个输入必须获得的最小能量值k(0<=k<=q),第三个是q个坐标(xi,yi),(-100000<=xi<=100000, -100000<=yi<=100000 并且 xi 和 yi 都是整数 )。输出一个正整数 r,表示最小的半径。

展开
收起
游客4skzfvnrxrzbi 2021-12-23 16:55:58 399 0
1 条回答
写回答
取消 提交回答
  • 1.计算每个点到原点的距离,为了减少计算量可以只计算到平方。使用long[n] 这样的数组来保存。使用 long 类型是为了防止平方之后结果超出int 类型范围。 2.对距离进行从小到大排序 3.取排序后的第 k 个数值开根号,转化为 int 类型并加 1。加 1 是因为开根号后可能为小数,转化成 int 类型会直接舍去小数部分,导致结果比实际小一些。 因此输入:4 3 [[1,1],[-1,1],[-1,-1],[2,3]] 输出:2

    2021-12-23 18:47:00
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载