【C++二分查找】1011. 在 D 天内送达包裹的能力

news2024/9/21 22:17:05

本文涉及的基础知识点

C++二分查找

LeetCode1011. 在 D 天内送达包裹的能力

传送带上的包裹必须在 days 天内从一个港口运送到另一个港口。
传送带上的第 i 个包裹的重量为 weights[i]。每一天,我们都会按给出重量(weights)的顺序往传送带上装载包裹。我们装载的重量不会超过船的最大运载重量。
返回能在 days 天内将传送带上的所有包裹送达的船的最低运载能力。
示例 1:
输入:weights = [1,2,3,4,5,6,7,8,9,10], days = 5
输出:15
解释:
船舶最低载重 15 就能够在 5 天内送达所有包裹,如下所示:
第 1 天:1, 2, 3, 4, 5
第 2 天:6, 7
第 3 天:8
第 4 天:9
第 5 天:10
请注意,货物必须按照给定的顺序装运,因此使用载重能力为 14 的船舶并将包装分成 (2, 3, 4, 5), (1, 6, 7), (8), (9), (10) 是不允许的。
示例 2:
输入:weights = [3,2,2,4,1,4], days = 3
输出:6
解释:
船舶最低载重 6 就能够在 3 天内送达所有包裹,如下所示:
第 1 天:3, 2
第 2 天:2, 4
第 3 天:1, 4
示例 3:
输入:weights = [1,2,3,1,1], days = 4
输出:3
解释:
第 1 天:1
第 2 天:2
第 3 天:3
第 4 天:1, 1
提示:
1 <= days <= weights.length <= 5 * 104
1 <= weights[i] <= 500

二分

二分查找类型:寻找首端
Check函数参数范围:[max(weights),sum(weights)]
Check函数:
计算需要的天数(船数)cnt ,返回cnt <= dyas;has记录当前船的载重,通过n枚举各包裹重量,如果has+ n > mid,则此包裹放到新船;否则放到当前船。

代码

核心代码

class Solution {
		public:
			int shipWithinDays(vector<int>& weights, int days) {
				auto Check = [&](int mid) {
					int has = 0;//当前车的货物总量
					int cnt = 1;//需要的天数
					for (const auto& n : weights) {
						if (n+has > mid) { cnt++; has = 0; }
						has += n;						
					}
					return cnt <= days;
				};
				const int iMax = *max_element(weights.begin(), weights.end());
				return CBinarySearch<int>(iMax, accumulate(weights.begin(), weights.end(),0)).FindFrist(Check);
			}

单元测试

vector<int> weights;
		int days;
	
		TEST_METHOD(TestMethod13)
		{
			weights = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }, days = 5;
			auto res = Solution().shipWithinDays(weights, days);
			AssertEx(15, res);
		}
		TEST_METHOD(TestMethod14)
		{
			weights = { 3,2,2,4,1,4 }, days = 3;
			auto res = Solution().shipWithinDays(weights, days);
			AssertEx(6, res);
		}
		TEST_METHOD(TestMethod15)
		{
			weights = { 1,2,3,1,1 }, days = 4;
			auto res = Solution().shipWithinDays(weights, days);
			AssertEx(3, res);
		}

扩展阅读

我想对大家说的话
工作中遇到的问题,可以按类别查阅鄙人的算法文章,请点击《算法与数据汇总》。
学习算法:按章节学习《喜缺全书算法册》,大量的题目和测试用例,打包下载。重视操作
有效学习:明确的目标 及时的反馈 拉伸区(难度合适) 专注
闻缺陷则喜(喜缺)是一个美好的愿望,早发现问题,早修改问题,给老板节约钱。
子墨子言之:事无终始,无务多业。也就是我们常说的专业的人做专业的事。
如果程序是一条龙,那算法就是他的是睛
失败+反思=成功 成功+反思=成功

视频课程

先学简单的课程,请移步CSDN学院,听白银讲师(也就是鄙人)的讲解。
https://edu.csdn.net/course/detail/38771
如何你想快速形成战斗了,为老板分忧,请学习C#入职培训、C++入职培训等课程
https://edu.csdn.net/lecturer/6176

测试环境

操作系统:win7 开发环境: VS2019 C++17
或者 操作系统:win10 开发环境: VS2022 C++17
如无特殊说明,本算法用**C++**实现。

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

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

相关文章

MVC与三层架构分层

1. 应用分层 应用分层类似公司的组织架构。我们进行项目开发时&#xff0c;最开始功能简单&#xff0c;前后端放在一起开发&#xff0c;但随着项目功能的复杂&#xff0c;项目会被前端和后端不同的团队接手&#xff0c;甚至更细粒度的团队。甚至后端开发也会根据功能再进行细分…

把VTK窗口嵌入到Qt的窗口中显示(二)

把VTK窗口嵌入到Qt的窗口中显示(二) 一、控件拖动 之前的文章介绍了,如何通过拖动一个控件,然后提升这个控件为QVTKWidget,然后来显示点云信息。 把VTK窗口嵌入到Qt的窗口中显示(一) 其实我们还可以直接通过代码来实现。我们打开QVTKWidget的代码可以看到,这个类就…

函数序列的逐点收敛和一致收敛的理解

目录 1. 逐点收敛(Pointwise Convergence) 1.1 逐点收敛定义 1.2 对逐点收敛的理解 1.3 举例说明 2. 一致收敛(Uniform Convergence) 2.1 一致收敛定义 2.2 对一致收敛的理解 2.3 举例说明 1. 逐点收敛(Pointwise Convergence) 1.1 逐点收敛定义 我们令 为…

无人机里的陀螺仪/加速器/气压计/GPS详解

陀螺仪 是一种用于测量和控制无人机姿态的重要传感器。它通过检测无人机的旋转运动来提供准确的方向和角度信息。 加速度计 用于提供无人机在XYZ三轴方向所承受的加速力。它也能决定无人机在静止状态时的倾斜角度。 气压计 通过测量大气压力来估算无人机的高度。随着高度的…

疫情隔离酒店管理系统的开发--论文pf

TOC springboot395疫情隔离酒店管理系统的开发--论文pf 绪 论 1.1研究背景与意义 当前&#xff0c;我国的常态化防控正处于迅速发展阶段&#xff0c;管理人员与疫情防控进一步标准化&#xff0c;需各酒店等生活服务场所加强管理&#xff0c;使用健全的信息系统对防控工作进…

Windows环境在使用Pycharm设置Python解译器时提示找不到Python打包工具,安装打包工具错误提示解决方法

问题现像如下 截图&#xff1a; 解决方法&#xff1a; 第一步&#xff1a;在CMD命令行输入&#xff1a; python -m ensurepip --default-pip 安装distutils 第二步&#xff1a;检查和安装setuptools和wheel&#xff1a; python -m pip install --upgrade setuptools wheel…

如何搭建软件测试环境?

关于如何搭建测试环境&#xff0c;也是面试会经常问到的一个问题&#xff0c;一般常见于一些创业公司&#xff0c;因为测试环境不够完善&#xff0c;可能会遇到搭建环境这个问题。 一般来说&#xff0c;测试环境搭建都属于运维的工作范畴&#xff0c;但是可能有些创业公司就没有…

日拱一卒(5)——leetcode学习记录:路经总和

一、任务 给定一个数组 prices &#xff0c;它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。 你只能选择 某一天 买入这只股票&#xff0c;并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润。 返回你可以从这笔交易中获取的…

【秋招笔试】8.17饿了么秋招第一场-三语言题解

🍭 大家好这里是 春秋招笔试突围,一起备战大厂笔试 💻 ACM金牌团队🏅️ | 多次AK大厂笔试 | 编程一对一辅导 ✨ 本系列打算持续跟新 春秋招笔试题 👏 感谢大家的订阅➕ 和 喜欢💗 和 手里的小花花🌸 ✨ 笔试合集传送们 -> 🧷春秋招笔试合集 🍒 本专栏已收…

Unity图形系统

Unity的图形系统是一个复杂且功能强大的模块&#xff0c;它支持多种渲染技术和API&#xff0c;能够满足从移动设备到高端游戏机和桌面平台的各种需求。以下是关于Unity图形系统的详细解析&#xff1a; 渲染流程与技术 Unity的渲染流程可以分为应用程序阶段&#xff08;CPU&…

公开测评:文件防泄密系统哪家好|4款文件防泄密软件推荐

在文件防泄密系统领域&#xff0c;有多款软件以其高效、安全和全面的功能脱颖而出&#xff0c;为企业数据保护提供了有力支持。以下是四款值得推荐的文件防泄密软件&#xff0c;它们各具特色&#xff0c;能够满足不同企业的数据安全需求。 1. 安企神软件 7天试用版https://wor…

Ubuntu | 更换 Geth 版本

参考博客&#xff1a;VMware 虚拟机下 Ubuntu 中 geth 和 truffle 更换版本解决 写在前面&#xff1a;我按照参考博客的方法添加了环境变量&#xff0c;但是报错 geth 命令不存在&#xff0c;因此我换了一种方法。 重新安装 1.10.8-stable 版本的 Geth ① 移除当前已经安装的…

Nginx核心配置详解

一、配置文件说明 nginx官方帮助文档&#xff1a;nginx documentation nginx的配置文件的组成部分&#xff1a; 主配置文件&#xff1a;nginx.conf子配置文件: include conf.d/*.conffastcgi&#xff0c; uwsgi&#xff0c;scgi 等协议相关的配置文件mime.types&#xff1a;…

无人机之螺旋桨篇

一、工作原理 根据牛顿第三定律&#xff0c;无人机受到向上的力&#xff0c;这是因为桨叶对空气施加了一个向上的力。螺旋桨产生的升力是指使飞机或无人机升空的力量。升力的大小取决于机翼或螺旋桨的倾斜角度。当空气流过机翼或螺旋桨时&#xff0c;其速度在顶部增加&#xff…

计算机毕业设计 学生就业信息系统 Java+SpringBoot+Vue 前后端分离 文档报告 代码讲解 安装调试

&#x1f34a;作者&#xff1a;计算机编程-吉哥 &#x1f34a;简介&#xff1a;专业从事JavaWeb程序开发&#xff0c;微信小程序开发&#xff0c;定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事&#xff0c;生活就是快乐的。 &#x1f34a;心愿&#xff1a;点…

计算数学精解【14】-Maxima计算精解【2】

文章目录 基础符号计算 参考文献 基础 符号计算 分数&#xff08;有理数&#xff09;基本运算 无理数 小数及位数 bfloat提供任意精度实数,fpprec控制小数位数 代数展开 ratsimp完成通分 因式分解 参考文献 1.《Maxima在线性代数的应用》 2. https://maxima.sourcefor…

Linux内核之网络套接字

文章目录 前言一、TCP4层模型和OSI7层模型OSI 7层模型TCP/IP 4层模型比较 二、套接字概念三、sockaddr_in和sockaddr结构体sockaddr_insockaddr区别 四、协议中的数据划分数据划分和首部添加流程数据接收与解析流程流程图 前言 一、TCP4层模型和OSI7层模型 OSI 7层模型 物理…

XSS Game练习

1.Ma Spaghet 直接get传参 ?somebodyaaaa直接使用img标签 ?somebody<img%20src1%20onerror"alert(1337)">官方文档 应使用innertext&#xff0c;安全性更高 2.Jefff 通过代码可以知道是通过eval的代码执行&#xff0c;setTimeout中的内容表示在一秒后执行…

avalonia学习之布局组件

border 边框控件用边框和背景装饰一个&#xff08;单个&#xff09;子控件。它还可用于显示圆角。 属性 属性描述Background背景颜色。BorderBrush边框颜色。BorderThickness边框线粗细&#xff08;整数&#xff09;。CornerRadius所有四个角的半径&#xff08;一个值&#…

解决com.google.android.play:core:1.10.3在10.1号之后targetSDK升到34的问题

implementation com.google.android.play:core:1.10.3或者这样的 升到android14 之后可能提审的时候都会遇到这个问题&#xff0c;解决方法如下&#xff1a; implementation com.google.android.play:asset-delivery:2.2.2 implementation com.google.android.play:app-update…