当前位置: 首页 > news >正文

leetcode 3453. 分割正方形 I 中等

给你一个二维整数数组squares,其中squares[i] = [xi, yi, li]表示一个与 x 轴平行的正方形的左下角坐标和正方形的边长。

找到一个最小的y 坐标,它对应一条水平线,该线需要满足它以上正方形的总面积等于该线以下正方形的总面积。

答案如果与实际答案的误差在10^-5以内,将视为正确答案。

注意:正方形可能会重叠。重叠区域应该被多次计数

示例 1:

输入:squares = [[0,0,1],[2,2,1]]

输出:1.00000

解释:

任何在y = 1y = 2之间的水平线都会有 1 平方单位的面积在其上方,1 平方单位的面积在其下方。最小的 y 坐标是 1。

示例 2:

输入:squares = [[0,0,2],[1,1,1]]

输出:1.16667

解释:

面积如下:

  • 线下的面积:7/6 * 2 (红色) + 1/6 (蓝色) = 15/6 = 2.5
  • 线上的面积:5/6 * 2 (红色) + 5/6 (蓝色) = 15/6 = 2.5

由于线以上和线以下的面积相等,输出为7/6 = 1.16667

提示:

  • 1 <= squares.length <= 5 * 10^4
  • squares[i] = [xi, yi, li]
  • squares[i].length == 3
  • 0 <= xi, yi <= 10^9
  • 1 <= li <= 10^9
  • 所有正方形的总面积不超过10^12

分析:浮点二分答案,设当前的上界为 r,下界为 l,中线为 mid。分别计算当前答案的上方和下方面积和,如果面积差小于 10 的 -5 次方,则可将 r=mid;否则 l=mid。因为题目要求答案误差范围在 10 的 -5 次方内,所以结束条件为 r-l<0.00001。

double separateSquares(int** squares, int squaresSize, int* squaresColSize) { double ans=0; int low=squares[0][1],high=squares[0][1]+squares[0][2]; for(int i=1;i<squaresSize;++i) low=fmin(low,squares[i][1]),high=fmax(high,squares[i][1]+squares[i][2]); double l=low,r=high; while(l<r) { double mid=(l+r)/2.0,area_l=0.0,area_h=0.0; for(int i=0;i<squaresSize;++i) { if(mid<=squares[i][1])area_h+=1.0*squares[i][2]*squares[i][2]; else if(mid>=squares[i][1]+squares[i][2])area_l+=1.0*squares[i][2]*squares[i][2]; else { double temp=squares[i][2]*1.0*(squares[i][1]+squares[i][2]-mid); area_h+=temp,area_l+=1.0*squares[i][2]*squares[i][2]-temp; } } if(area_h<=area_l)r=mid; else if(area_h>area_l)l=mid; // printf("l=%f r=%f mid=%f\n",l,r,mid); if(r-l<=0.00001) { ans=l;break; } } return ans; }
http://www.jsqmd.com/news/239775/

相关文章:

  • n8n供应链攻击滥用社区节点窃取OAuth令牌
  • omni.audio2face.exporter.scripts.livelinksender] Socket not connected: localhost, 12030
  • 计算机毕设java学生竞赛资料网的设计与实现 基于Java的学生竞赛信息管理平台的设计与开发 Java环境下学生竞赛资料管理系统的构建与实现
  • 利用零宽度字符的隐形JavaScript混淆工具InvisibleJS浮出水面
  • [实战] 阿里云 Linux 3 安装 GitLab Runner 全踩坑记录:解决 Repo 404 及 SSH 模式报错,最终 Shell 模式完美运行
  • 计算机毕设java学生宿舍管理系统 基于Java的高校学生宿舍智能管理系统设计与实现 Java技术驱动的学生宿舍综合管理平台开发
  • vm的桥接模式理解
  • 1.2.2 国内主流AI模型深度测评:通义千问、文心一言、讯飞星火全面对比
  • 动态高斯模糊技术揭秘:AI人脸隐私卫士参数详解
  • 技术流速通:低代码破局固资管理“黑箱”,从架构到落地全拆解
  • YY/T 0681.15-2019:守护无菌医疗器械yyt0618.15-2019运输安全的核心准则
  • 2026年TOP3最佳EOR名义雇主服务优势排行榜,让企业更高效应对国际化挑战
  • GBT4857.22标准深度解析,揭秘物流运输中gbt4857.22稳定守护者
  • 1.2.4 AI模型选择指南:如何找到最适合你的模型
  • YY/T 0681.15:无菌医疗器械yyt0681.15运输包装的安全守护指南
  • Oracle数据库小记
  • 测试, 逐步冻结
  • 大模型竞速进入深水区:Gemini、豆包与DeepSeek的差异化突围之路
  • 2026必备!研究生论文写作TOP8 AI工具深度测评
  • 如何选择EOR名义雇主服务?2026年最佳五款优质产品推荐
  • 啤酒厂“酵母云”:发酵度在线预测缩短酒龄1天
  • 开源思维导图工具 Simple Mind Map v0.17.0
  • 2026年EOR名义雇主服务对比,TOP5品牌推荐排行榜助力企业高效国际化布局
  • 《UVA11181 条件概率 Probability|Given》
  • 2026北京注册公司流程
  • CST电动汽车EMC仿真(三)——初探轴电压
  • 1.2.1 国际主流AI模型深度测评:ChatGPT、Claude、Gemini全面对比
  • 水厂安全监测管理系统:御控物联网方案
  • 前端小白别慌:搞懂短路求值,代码少写一半还更稳!
  • 可观察的到底是个啥?前端老铁速看,别再被 RxJS 整懵了!