LeetCode 刷题日志

文章目录

  • 1954. 收集足够苹果的最小花园周长
    • 思考:
    • 暴力枚举
    • 代码实现
    • 二分查找
    • 代码实现

1954. 收集足够苹果的最小花园周长

1954. 收集足够苹果的最小花园周长

难度: 中等

题目大意:

给你一个用无限二维网格表示的花园,每一个 整数坐标处都有一棵苹果树。整数坐标 (i, j) 处的苹果树有 |i| + |j| 个苹果。

你将会买下正中心坐标是 (0, 0) 的一块 正方形土地 ,且每条边都与两条坐标轴之一平行。

给你一个整数 neededApples ,请你返回土地的 最小周长 ,使得 至少neededApples 个苹果在土地 里面或者边缘上

  • 1 <= neededApples <= 10^15

Leetcode

思考:

这个图形是很对称的,那么很自然会想到要推导一个用边长来表示边上的所有苹果数量,而且我们只需要计算出第一象限的苹果即可,假设最右边的的横坐标是x,那我们只需要计算(x, 0) (x, x),然后根据对称性乘以4,然后对边长上的苹果求一个和

公式推导:
∑ x 2 x r = 3 x ( x + 1 ) 2 , 边上苹果数 = 4 ∗ ∑ x 2 x r = 6 x ( x + 1 ) = 6 ( x 2 + x ) \sum_x^{2x}{r} = \frac {3x(x + 1)}{2},边上苹果数 = 4 * \sum_x^{2x}{r} =6x(x + 1)=6(x^2 + x) x2xr=23x(x+1),边上苹果数=4x2xr=6x(x+1)=6(x2+x)

∑ 0 n r 2 = n ( n + 1 ) ( 2 n + 1 ) 6 \sum_0^nr^2 = \frac{n(n + 1)(2n + 1)}6 0nr2=6n(n+1)(2n+1)

∑ 苹果 = ∑ 0 n 6 ( x 2 + x ) = 2 n ( n + 1 ) ( 2 n + 1 ) \sum苹果 = \sum_0^n6(x^2 + x) = 2n(n + 1)(2n + 1) 苹果=0n6(x2+x)=2n(n+1)(2n+1)

就有了下面两种思路:

暴力枚举

我们至于要枚举边长,如果达到了要求,直接返回即可

代码实现

class Solution {
public:using LL = long long;long long minimumPerimeter(long long neededApples) {LL res = 0, sum = 0;for (int i = 0; ; i ++) {sum += 12 * (LL)i * i;if (sum >= neededApples) {res = i;break;}}return res * 8;}
};

考虑优化方案, 要满足2n(n + 1)(2n + 1) - k >= 0 我们画出这个图像

在这里插入图片描述

我们只需要求出与x正方向的交点即可,就有了下面这个思路

二分查找

注意到,在x0左侧的这一部分都是小于0的,在x0的右侧都是大于0的,这样就可以二分了

代码实现

class Solution {
public:using LL = long long;long long minimumPerimeter(long long neededApples) {;double l = 0, r = 70000;auto check = [&](double mid) -> bool {return 2 * mid * (mid + 1) * (2 * mid + 1) - neededApples < 0;};while (r - l > 1e-6) {double mid = (l + r) / 2;if (check(mid)) l = mid;else r = mid;}return ceil(l) * 8;}
};
  • ceil(x)函数是对x上取整

【微语】做你自己,因为其他角色都已经有人扮演了。

结束了

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/308720.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

R503S指纹识别模块的指令系统(二)

18 获取随机数 GetRandomCode&#xff08;0x14&#xff09; 功能说明&#xff1a;令模块生成一个随机数返回给上位机 输入参数&#xff1a;无 返回参数&#xff1a;确认码 RandomCode&#xff08;随机数&#xff09; 指令代码&#xff1a;0x14 确认码0x00 表示获取成功&…

传统项目基于tomcat cookie单体会话升级分布式会话解决方案

传统捞项目基于servlet容器 cookie单体会话改造分布式会话方案 ##引入redis,spring-session依赖 <!--redis依赖 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId>&…

英文建筑图纸翻译工程图纸翻译

建筑图纸是以图形和文字为语言&#xff0c;详细描绘了工程建筑、机械、设备等结构、形状、尺寸及其他要求。对于建筑图纸翻译&#xff0c;表达必须清楚准确。那么&#xff0c;如何确保英文建筑图纸翻译工程图纸翻译的准确性&#xff1f; 首先&#xff0c;我们需要深入了解建筑图…

Stable Diffusion WebUI安装合成面部说话插件SadTalker

SadTalker可以根据一张图片、一段音频&#xff0c;合成面部说这段语音的视频。图片需要真人或者接近真人。 安装ffmpeg 下载地址&#xff1a; https://www.gyan.dev/ffmpeg/builds/ 下载ffmpeg-git-full.7z 后解压&#xff0c;将解压后的目录\bin添加到环境变量的Path中。 在…

Halcon颜色通道的处理decompose3/image_to_channels/channels _to _image

Halcon颜色通道的处理 文章目录 Halcon颜色通道的处理一. 图像的通道二. 访问通道1.访问通道2.获取通道的数量 三. 通道分离与合并1. decompose3算子2. image_to_channels 算子3. compose3算子4. channels_to_image算子 四. 处理RGB信息 由于彩色图像通常包含不止一个通道&…

LeetCode刷题--- 单词搜索

个人主页&#xff1a;元清加油_【C】,【C语言】,【数据结构与算法】-CSDN博客 个人专栏 力扣递归算法题 http://t.csdnimg.cn/yUl2I 【C】 ​​​​​​http://t.csdnimg.cn/6AbpV 数据结构与算法 ​​​​http://t.csdnimg.cn/hKh2l 前言&#xff1a;这个专栏主要讲述…

RS-485 RS-232 RS-422 区别和理解

RS-485&#xff0c;RS-232&#xff0c;RS-422区别和理解 目录概述需求&#xff1a; 设计思路实现思路分析1.概述2.区别 参考资料和推荐阅读 Survive by day and develop by night. talk for import biz , show your perfect code,full busy&#xff0c;skip hardness,make a b…

ORACLE P6 v23.12 最新虚拟机(VM)全套系统环境分享

引言 根据上周的计划&#xff0c;我简单制作了两套基于ORACLE Primavera P6 最新发布的23.12版本预构建了虚拟机环境&#xff0c;里面包含了全套P6 最新版应用服务 此虚拟机仅用于演示、培训和测试目的。如您在生产环境中使用此虚拟机&#xff0c;请先与Oracle Primavera销售代…

管理系统设计开发与学习

目录 封面 一&#xff0e;内容简介 二&#xff0e;技术概述 1.Spring Boot 2.MVC模式 3.数据库技术 4.Web前端技术 5.对接技术 四&#xff0e;体系架构 设计架构 系统分层 系统结构 五.数据库的设计 六.开发准备 开发工具 开发环境 七&#xff0e;学习总结 八…

2024最新最全【学习网络安全必须知道的100 个网络基础知识】

1 什么是链接? 链接是指两个设备之间的连接。它包括用于一个设备能够与另一个设备通信的电缆类型和协议。 2 OSI 参考模型的层次是什么? OSI 七层模型&#xff1a;物理层&#xff0c;数据链路层&#xff0c;网络层&#xff0c;传输层&#xff0c;会话层&#xff0c;表示…

理解 AQS 和 ReentrantLock

其他系列文章导航 Java基础合集数据结构与算法合集 设计模式合集 多线程合集 分布式合集 ES合集 文章目录 其他系列文章导航 文章目录 前言 一、公平锁和非公平锁 1.1 含义 1.2 如何自我实现 1.2.1 公平锁实现&#xff1a; 1.2.2 非公平锁实现: 1.2.3 公平和非公平的区…

第十一章 浏览器对象模型(BOM)的介绍和使用

文章目录 一、BOM介绍二、window的子对象三、window的方法和事件四、定时器五、练习 一、BOM介绍 BOM是Browser Object Model的缩写&#xff0c;简称浏览器对象模型。这个对象就是windowBOM提供了独立于内容而与浏览器窗口进行交互的对象BOM由一系列相关的对象构成&#xff0c…