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.mzph.cn/news/585716.shtml

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

相关文章

Matplotlib ------ 纵坐标科学计数法含义

matplotlib 纵坐标科学计数法含义 引言正文 引言 今天画图时遇到了一个问题&#xff0c;发现纵坐标是科学计数法的表示&#xff0c;但是很难理解它的含义&#xff0c;这里特来记录一下。 正文 我们以下图为例&#xff0c; 由图上我们可以看出&#xff0c;纵坐标显示为 1e-…

PHP序列化总结3--反序列化的简单利用及案例分析

反序列化中生成对象里面的值&#xff0c;是由反序列化里面的值决定&#xff0c;与原类中预定义的值的值无关&#xff0c;穷反序列化的对象可以使用类中的变量和方法 案例分析 反序列化中的值可以覆盖原类中的值 我们创建一个对象&#xff0c;对象创建的时候触发了construct方…

纯CSS3制作优惠券线性UI效果

纯CSS3制作优惠券线性UI效果-遇见你与你分享

《分布式事务理论基础:CAP定理 BASE理论》

目录 学习目标 1.分布式事务理论基础 1.1.本地事务 1.2.分布式事务 分布式事务产生的原因&#xff1f; 哪些场景会产生分布式事务&#xff1f; 单体系统会产生分布式事务问题吗&#xff1f; 只有一个库&#xff0c;会产生分布式事务问题吗&#xff1f; 分布式事务举…

rax3000m刷openwrt固件

rax3000m刷机过程&#xff08;nand版本&#xff09; 刷机准备文件https://www.123pan.com/s/X5m9-6Ynj.html提取码:VtBW 接线关系&#xff1a;路由器lan口接电脑 1.上传配置开启ssh的配置文件&#xff08;登录路由器后台管理界面在找到配置管理&#xff0c;上传配置文件rax3…

HBase深度历险 | 京东物流技术团队

简介 HBase 的全称是 Hadoop Database&#xff0c;是一个分布式的&#xff0c;可扩展&#xff0c;面向列簇的数据库&#xff0c;是一个通过大量廉价的机器解决海量数据的高速存储和读取的分布式数据库解决方案。本文会像剥洋葱一样&#xff0c;层层剥开她的心。 特点 首先我…

【网络安全 | CTF】FlatScience

该题考察SQL注入 正文 后台扫到robots.txt 页面内容如下&#xff1a; 进入login.php 页面源代码如图&#xff1a; 传参debug得到php代码&#xff1a; <?php if(isset($_POST[usr]) && isset($_POST[pw])){$user $_POST[usr];$pass $_POST[pw];$db new SQLite3…

ArcGIS批量计算shp面积并导出shp数据总面积(建模法)

在处理shp数据时&#xff0c; 又是我们需要知道许多个shp字段的批量计算&#xff0c;例如计算shp的总面积、面积平均值等&#xff0c;但是单个查看shp文件的属性进行汇总过于繁琐&#xff0c;因此可以借助建模批处理来计算。 首先准备数据&#xff1a;一个含有多个shp的文件夹。…

【三维目标检测/自动驾驶】IA-BEV:基于结构先验和自增强学习的实例感知三维目标检测(AAAI 2024)

系列文章目录 论文&#xff1a;Instance-aware Multi-Camera 3D Object Detection with Structural Priors Mining and Self-Boosting Learning 地址&#xff1a;https://arxiv.org/pdf/2312.08004.pdf 来源&#xff1a;复旦大学 英特尔Shanghai Key Lab /美团 文章目录 系列文…

初识智慧城市

文章目录 智慧家居 智慧社区 智慧交通 智慧医疗 智慧教育 智慧旅游 智慧农业 智慧安防 智慧家居 利用智能语音、智能交互等技术,实现用户对家居系统各设备的远程操控和能控制如开关窗帘(窗户)、操控家用电器和照明系统、打扫卫生等操作。利用计算机视觉等技术,对被照看…

数据库——简单查询复杂查询

1.实验内容及原理 1. 在 Windows 系统中安装 VMWare 虚拟机&#xff0c;在 VMWare 中安装 Ubuntu 系统,并在 Ubuntu 中搭建 LAMP 实验环境。 2. 使用 MySQL 进行一些基本操作&#xff1a; &#xff08;1&#xff09;登录 MySQL&#xff0c;在 MySQL 中创建用户&#xff0c;…

Tips:VS2022提示MSB8040 此项目需要缓解了 Spectre 漏洞的库解决方法。

1&#xff0c;打开Visual Studio Installer 2、点击【修改】 3、选中【单个组件】&#xff0c;输入Spectre&#xff0c;下拉到【编译 工具和运行时】进行选择&#xff08;尽量寻找最新版本&#xff09;&#xff0c;然后点击【修改】进行安装&#xff08;如果VS2022没有关闭&…

PHP序列化总结2--常见的魔术方法

魔术方法的概念 PHP的魔术方法是一种特殊的方法&#xff0c;用于覆盖PHP的默认操作。它们以双下划线&#xff08;__&#xff09;开头&#xff0c;后面跟着一些特定的字符串&#xff0c;如__construct()、__destruct()、__get()等。这些魔术方法在对象执行特定操作时被自动调用…

山西电力市场日前价格预测【2023-12-31】

日前价格预测 预测说明&#xff1a; 如上图所示&#xff0c;预测明日&#xff08;2023-12-31&#xff09;山西电力市场全天平均日前电价为445.23元/MWh。其中&#xff0c;最高日前电价为791.27元/MWh&#xff0c;预计出现在08:15。最低日前电价为270.52元/MWh&#xff0c;预计…

什么是SSL证书?在哪里免费申请?

随着互联网蓬勃发展&#xff0c;人们在日常生活中越来越依赖网络。然而&#xff0c;网络攻击和数据泄露日益猖獗&#xff0c;保护网站和用户信息的安全变得尤为紧迫。在这一背景下&#xff0c;SSL证书成为至关重要的安全措施。 SSL证书的首要功能在于防范网络攻击。相较于不安全…

MYSQL的UPDATE时锁表机制

&#xff08;笔记&#xff0c;只为获取流量券&#xff09; MySQL中&#xff0c;UPDATE 操作涉及到行级锁和表级锁的概念&#xff0c;具体取决于事务隔离级别和被更新的条件, 无索引的情况下&#xff1a; 当表没有索引的情况下&#xff0c;UPDATE 操作通常会涉及到表级锁。这是…

2023年末,软件测试面试题总结与分享

大家好&#xff0c;最近有不少小伙伴在后台留言&#xff0c;得准备年后面试了&#xff0c;又不知道从何下手&#xff01;为了帮大家节约时间&#xff0c;特意准备了一份面试相关的资料&#xff0c;内容非常的全面&#xff0c;真的可以好好补一补&#xff0c;希望大家在都能拿到…

Linux-权限

1.Linux权限的概念 Linux下有两种用户&#xff1a;超级用户&#xff08;root&#xff09;、普通用户。 超级用户&#xff1a;可以再 linux 系统下做任何事情&#xff0c;不受限制 普通用户&#xff1a;在 linux 下做有限的事情。 超级用户的命令提示符是 “#” &#xff0c…

数字图像处理——亚像素边缘的轮廓提取

像素 像素是图像处理中的基本单位&#xff0c;一个像素是图像中最小的离散化单位&#xff0c;具有特定的位置和颜色信息。在数字图像中&#xff0c;每个像素都有一个特定的坐标&#xff0c;通常以行和列的形式表示。每个像素的颜色信息可以通过不同的表示方式&#xff0c;如灰…

MongoDB Certified Associate Developer 认证考试心得

介绍 前段时间通过了 MongoDB Associate Developer 考试&#xff0c;也记下了一些心得&#xff0c;结果忘记发出来了&#xff0c;现在重新整理下。通过考试后证书是这样的: MongoDB 目前有两个认证证书 1. MongoDB Associate Developer 认证掌握使用MongoDB 来构建现代应用…