news 2026/4/24 1:58:26

圆覆盖【牛客tracker 每日一题】

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
圆覆盖【牛客tracker 每日一题】

圆覆盖

时间限制:3秒 空间限制:256M

网页链接

牛客tracker

牛客tracker & 每日一题,完成每日打卡,即可获得牛币。获得相应数量的牛币,能在【牛币兑换中心】,换取相应奖品!助力每日有题做,丰盈牛币日益多!

题目描述

在二维平面中给出n nn个点,第i ii个点的坐标为( x i , y i ) (x_i,y_i)(xi,yi),其点权为v i v_ivi。你可以以原点( 0 , 0 ) (0,0)(0,0)为圆心放置一个圆。

设圆的半径为r rr,若某点满足x i 2 + y i 2 ≦ r 2 x_i^2+y_i^2≦r^2xi2+yi2r2,则认为该点被圆覆盖。请你计算:

若无论半径多大都无法达到权值下限,则输出− 1 −11

输入描述:

第一行输入两个整数n , S ( 1 ≦ n ≦ 10 5 , 1 ≦ S ≦ 10 14 ) n,S(1≦n≦10^5, 1≦S≦10^{14})n,S(1n105,1S1014)——点的数量与要求的权值下限。

接下来n nn行,第i ii行输入三个整数x i , y i , v i ( − 10 9 ≦ x i , y i ≦ 10 9 , 0 ≦ v i < 2 31 ) x_i,y_i,v_i (−10^9≦x_i,y_i≦10^9, 0≦v_i<2^{31})xi,yi,vi(109xi,yi109,0vi<231),描述第 ii个点的坐标与权值。

输出描述:

若存在可行半径,在一行输出该最小半径r rr;否则输出− 1 −11

设你的输出为a aa,答案为b bb。当且仅当

∣ a − b ∣ m a x ⁡ ( 1 , ∣ b ∣ ) ∣ < 10 − 6 \frac{∣a−b∣}{max⁡(1,∣b∣)}∣<10^{−6}max(1,b)ab∣<106

时,你的答案将被判定为正确。

示例1

输入:

5 10 0 1 2 -1 1 3 3 3 4 -4 3 1 5 -3 1

输出:

5

说明:

当半径为5 55时,( 0 , 1 ) (0,1)(0,1)( − 1 , 1 ) (−1,1)(1,1)( 3 , 3 ) (3,3)(3,3)( − 4 , 3 ) (−4,3)(4,3)四个点被覆盖,权值和为2 + 3 + 4 + 1 = 10 2+3+4+1=102+3+4+1=10,达到要求。

示例2

输入:

5 10 0 1 2 -1 1 3 3 3 2 -4 3 1 5 -3 1

输出:

-1

说明:

权值和无法达到10 1010

解题思路

本题核心是排序+前缀和求解最小覆盖半径,规避浮点运算误差。以原点为圆心的圆覆盖点的判定条件为:点到原点的距离平方≤ ≤半径平方。因此先计算每个点到原点的距离平方,将所有点按距离平方升序排序。遍历排序后的点,累加权值计算前缀和,当累加和首次≥目标值S时,当前点的距离平方开平方即为最小半径。若遍历完所有点,总权值和仍小于S SS,说明无法满足要求,输出− 1 -11。算法时间复杂度为O ( n log ⁡ n ) O(n\log n)O(nlogn),完美适配n ≤ 10 5 n≤10^5n105的大数据规模,精准且高效。

总结

核心逻辑:按点到原点的距离升序排列,通过前缀和快速找到满足权值要求的最小半径。
关键操作:计算距离平方排序,线性累加权值判断阈值,对合法半径开方输出。
效率保障:排序+线性遍历,无冗余计算,全程用整数运算避免精度丢失。

代码内容

#include<bits/stdc++.h>usingnamespacestd;typedeflonglongll;typedefunsignedlonglongull;typedefvector<vector<ll>>vt;typedefpair<ll,ll>pll;constll N=1e5+10;constll p=1e9+7;constll INF=1e18;constll M=2e3+10;structnode{ll r_2,v;}d[N];boolcmp(node a,node b){returna.r_2<b.r_2;}intmain(){ll n,s;cin>>n>>s;for(ll i=1;i<=n;i++){ll x,y;cin>>x>>y>>d[i].v;d[i].r_2=x*x+y*y;}sort(d+1,d+n+1,cmp);ll sum=0;for(ll i=1;i<=n;i++){sum+=d[i].v;if(sum>=s){printf("%.6lf",sqrt(d[i].r_2));return0;}}cout<<-1<<endl;return0;}
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/17 1:35:25

从零实现一个简化版VLLM EngineCoreClient:理解多进程通信核心机制

从零构建轻量级推理引擎通信框架&#xff1a;Python多进程实战解析 在分布式AI推理系统中&#xff0c;核心组件间的通信效率往往成为性能瓶颈。想象这样一个场景&#xff1a;你的推理服务需要同时处理数百个并发请求&#xff0c;而单进程Python解释器的GIL锁、内存限制等问题让…

作者头像 李华
网站建设 2026/4/15 18:54:49

DDD的简单落地及防腐层(ACL)

一、后端架构演进模型 将服务器后端发展分三个阶段&#xff1a; 发展阶段核心特征初始复杂度业务复杂后的维护难度趋势当前应用状态面向过程脚本以脚本流程为核心简单指数级上升基本不使用面向数据库表以数据库表结构驱动设计中等延迟后指数级上升目前市场主流面向业务模型以…

作者头像 李华
网站建设 2026/4/17 14:58:47

从数据采集到回放验证:ADTF 适配 ROS 的 ADAS 测试实践腥

一、简化查询 1. 先看一下查询的例子 /// /// 账户获取服务 /// /// /// public class AccountGetService(AccountTable table, IShadowBuilder builder) { private readonly SqlSource _source new(builder.DataSource); private readonly IParamQuery_accountQuery b…

作者头像 李华
网站建设 2026/4/15 5:21:11

Android Studio中文界面终极指南:5分钟快速汉化教程

Android Studio中文界面终极指南&#xff1a;5分钟快速汉化教程 【免费下载链接】AndroidStudioChineseLanguagePack AndroidStudio中文插件(官方修改版本&#xff09; 项目地址: https://gitcode.com/gh_mirrors/an/AndroidStudioChineseLanguagePack 还在为Android St…

作者头像 李华
网站建设 2026/4/16 8:53:42

从量子到基因:C#蒙特卡洛模拟如何重塑科学实验边界?

1. 蒙特卡洛模拟&#xff1a;科学界的"万能骰子" 我第一次接触蒙特卡洛模拟是在研究生时期&#xff0c;当时要模拟量子粒子的运动轨迹。导师扔给我一本500页的量子力学教材和一行代码&#xff1a;"用Random.NextDouble()就能模拟整个宇宙"。这个看似玩笑的…

作者头像 李华