930/105每日一题

算法

1

错误j纠正后

4,2,9,11,
4,
2,4
2,4,9

	42
4
2

4 9
2(0)
4(1) 9(2)
11(3)

11(0)

11(1) 9(2)
11(3)

2

https://leetcode.cn/problems/minimum-time-to-complete-trips/

class Solution {
public:long long minimumTime(vector<int>& time, int totalTrips) {long long minTime = time[0];for (int i : time) {if (i < minTime){minTime = i;}}long long leftB = (minTime - 1)?(minTime - 1):1;long long rightB = minTime * totalTrips;long long mid;cout<<"leftB"<<leftB<<"  rightB"<<rightB<<"  expectMid"<<(leftB+rightB)/2<<endl;while (leftB <= rightB) {mid = (leftB + rightB) / 2;if(leftB==rightB)break;long long sum = 0;for (int i : time) {sum += (mid / i);}if (sum < totalTrips) {//cout <<"左侧为"<<leftB<<"右侧为"<<rightB<<"此时时间是"<<mid<< "  此时的出行次数是" << sum << endl;leftB = mid + 1;}else {//cout<<"左侧为"<<leftB<<"右侧为"<<rightB<<"此时时间是"<<mid<< "  此时的出行次数是" << sum << endl;rightB = mid;}}return mid;}
};

第一次是因为没有考虑到可能有多个情况满足条件,即解集有多个,但存在最优解,如果写成单点搜索的话,则很可能找不到最优解;
于是改为在匹配的情况中去尝试缩减答案
第二次是因为没有考虑结果在域内的增长可能并不是线性的,即不是1个1个的增,值域并不遍布全体,比如要搜索的区间是1-100,但是可取值,可取到的区间可能只是其中的一个子集,由于问题的特殊性而使的不规则增长导致
就是说搜索空间是A,由所搜索的数据所产生的结果所处的空间为B,要求是在A中找解使结果为R,有可能R就根本不在空间B当中,那么此时要找的应该是最接近B右侧的数据,这也就直接排除了单点搜索的可行性,因为可能根本就不存在
综合上面两点,二分搜索,就是去搜索满足条件的最左侧的值,也就是说,

  • 如果满足条件了(包含大于和等于),也不退出搜索,而是保留right=mid(=mid就是在解集中保留了其中的一个可行解)
    • 这样的话,若左侧还存在更好的解,由于right=mid,也会使搜索空间进一步缩小,以尝试取到那个解
    • 而如果右侧没有更好的解,此时的mid就是的话,由于是让right=mid,在下一轮搜索中并没有剔除掉这个解,而左侧(mid)又没有更好的解,那么必然会使left不断mid+1,最终收束到这个right上
  • 如果不满足条件,即小于时,则必定要把该点排出搜索空间,即left=mid+1
    那么最后退出搜索的条件就是空间中只剩一个解,即left==right,此时就应当退出搜索
    思考:退出搜索时所保留的mid,是否可能依然不满足条件?
    :当然有可能;但这取决于搜索空间本身的性质,若搜索空间中存在解,且满足单调性,那么最后的Mid必然满足条件;否则,若空间中就没有解,那么最后的mid也必然是搜索空间中某一端的值

最后一次,是因为sum开成了int,但存在比int大的数据,改为Longlong后通过

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

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

相关文章

C++之多态篇(超详细版)

1.多态概念 多态就是多种形态&#xff0c;表示去完成某个行为时&#xff0c;当不同的人去完成时会有不同的形态&#xff0c;举个例子在车站买票&#xff0c;可以分为学生票&#xff0c;普通票&#xff0c;军人票&#xff0c;每种票的价格是不一样的&#xff0c;当你是不同的身…

C语言 | Leetcode C语言题解之第457题环形数组是否存在循环

题目&#xff1a; 题解&#xff1a; int next(int* nums, int numsSize, int cur) {return ((cur nums[cur]) % numsSize numsSize) % numsSize; // 保证返回值在 [0,n) 中 }bool circularArrayLoop(int* nums, int numsSize) {for (int i 0; i < numsSize; i) {if (!n…

C++ | Leetcode C++题解之第456题132模式

题目&#xff1a; 题解&#xff1a; class Solution { public:bool find132pattern(vector<int>& nums) {int n nums.size();vector<int> candidate_i {nums[0]};vector<int> candidate_j {nums[0]};for (int k 1; k < n; k) {auto it_i upper_…

Ubuntu24.04远程开机

近来在几台机器上鼓捣linux桌面&#xff0c;顺便研究一下远程唤醒主机。 本篇介绍Ubuntu系统的远程唤醒&#xff0c;Windows系统的唤醒可搜索相关资料。 依赖 有远程唤醒功能的路由器&#xff08;当前一般都带这个功能&#xff09;有线连接主机&#xff08;无线连接有兴趣朋友…

信息安全工程师(33)访问控制概述

前言 访问控制是信息安全领域中至关重要的一个环节&#xff0c;它提供了一套方法&#xff0c;旨在限制用户对某些信息项或资源的访问权限&#xff0c;从而保护系统和数据的安全。 一、定义与目的 定义&#xff1a;访问控制是给出一套方法&#xff0c;将系统中的所有功能和数据…

【JAVA开源】基于Vue和SpringBoot的宠物咖啡馆平台

本文项目编号 T 064 &#xff0c;文末自助获取源码 \color{red}{T064&#xff0c;文末自助获取源码} T064&#xff0c;文末自助获取源码 目录 一、系统介绍二、演示录屏三、启动教程四、功能截图五、文案资料5.1 选题背景5.2 国内外研究现状5.3 可行性分析 六、核心代码6.1 查…

仿RabbitMQ实现消息队列三种主题的调试及源码

文章目录 开源仓库和项目上线广播交换模式下的测试直接交换模式下的测试主题交换模式下的测试 开源仓库和项目上线 本项目已开源到下面链接下的仓库当中 仿RabbitMQ实现消息队列 广播交换模式下的测试 消费者客户端 在进行不同测试下&#xff0c;消费者客户端只需要改变交换机…

基于SpringBoot+Vue+MySQL的中医院问诊系统

系统展示 用户前台界面 管理员后台界面 医生后台界面 系统背景 随着信息技术的迅猛发展和医疗服务需求的不断增加&#xff0c;传统的中医院问诊流程已经无法满足患者和医院的需求。纸质病历不仅占用大量存储空间&#xff0c;而且容易丢失和损坏&#xff0c;同时难以实现信息的快…

Acwing 背包问题

背包问题 首先&#xff0c;什么是背包问题&#xff1f; 给定N个物品和一个容量为V的背包&#xff0c;每个物品有体积和价值两种属性&#xff0c;在一些限制条件下&#xff0c;将一些物品放入背包&#xff0c;使得在不超过背包体积的情况下&#xff0c;能够得到的最大价值。根据…

【redis学习篇1】redis基本常用命令

目录 redis存储数据的模式 常用基本命令 一、set 二、keys pattern keys 字符串当中携带问号 keys 字符串当中携带*号 keys 【^字母】 keys * 三、exists 四、del 五、expire 5.1 ttl命令 5.2key删除策略 5.2.1惰性删除 5.2.2定期删除 六、type key的数据类型…

Windows安全加固详解

一、补丁管理 使用适当的命令或工具&#xff0c;检查系统中是否有未安装的更新补丁。 Systeminfo 尝试手动安装一个系统更新补丁。 • 下载适当的补丁文件。 • 打开命令提示符或PowerShell&#xff0c;并运行 wusa.exe <patch_file_name>.msu。 二、账号管…

Pikachu-Sql-Inject - 暴力破解

之前的破解&#xff0c;一般都需要 information_schema.schemata 、 information_schema.tables 、information_schema.columns 的权限&#xff0c;如果没有权限&#xff0c;就需要暴力破解&#xff1b; 如构造payload ,这个 abc 表就是我们要确定是否存在的表 vince and ex…

GPTQ vs AWQ vs GGUF(GGML) 速览和 GGUF 文件命名规范

简单介绍一下四者的区别。 参考链接&#xff1a;GPTQ - 2210.17323 | AWQ - 2306.00978 | GGML | GGUF - docs | What is GGUF and GGML? 文章目录 GPTQ vs AWQ vs GGUF&#xff08;GGML&#xff09; 速览GGUF 文件命名GGUF 文件结构文件名解析答案 附录GGUF 文件命名GGUF 文件…

Pandas基础学习

导入 导入pandas一般是这样导入的 import pandas as pdSeries 创建 s1 pd.Series([5, 17, 3, 26, 31])注意Series的第一个字母要大写&#xff0c;表明这其实是Series类的构建函数, 返回的是Series类的实例 获得元素或者索引 单独获得元素 s1.values单独获得索引值 s…

Flink 03 | 数据流基本操作

Flink数据流结构 DataStream 转换 通常我们需要分析的业务数据可能存在如下问题&#xff1a; 数据中包含一些我们不需要的数据 数据格式不方面分析 因此我们需要对原始数据流进行加工&#xff0c;比如过滤、转换等操作才可以进行数据分析。 “ Flink DataStream 转换主要作…

Kubernetes-环境篇-01-mac开发环境搭建

1、brew安装 参考知乎文章&#xff1a;https://zhuanlan.zhihu.com/p/111014448 苹果电脑 常规安装脚本&#xff08;推荐 完全体 几分钟安装完成&#xff09; /bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)"苹果电脑 极…

【Android】中级控件

其他布局 相对布局RelativeLayout RelativeLayout下级视图的位置是相对位置&#xff0c;得有具体的参照物才能确定最终位置。如果不设定下级视图的参照物&#xff0c;那么下级视图默认显示在RelativeLayout内部的左上角。用于确定视图位置的参照物分两种&#xff0c;一种是与…

自动驾驶系列—全面解析自动驾驶线控制动技术:智能驾驶的关键执行器

&#x1f31f;&#x1f31f; 欢迎来到我的技术小筑&#xff0c;一个专为技术探索者打造的交流空间。在这里&#xff0c;我们不仅分享代码的智慧&#xff0c;还探讨技术的深度与广度。无论您是资深开发者还是技术新手&#xff0c;这里都有一片属于您的天空。让我们在知识的海洋中…

JavaScript-上篇

JS 入门 JS概述 JavaScript&#xff08;简称JS&#xff09;是一种高层次、解释型的编程语言&#xff0c;最初由布兰登艾奇&#xff08;Brendan Eich&#xff09;于1995年创建&#xff0c;并首次出现在网景浏览器中。JS的设计初衷是为Web页面提供动态交互功能&#xff…

Leetcode - 140双周赛

目录 一&#xff0c;3300. 替换为数位和以后的最小元素 二&#xff0c;3301. 高度互不相同的最大塔高和 三&#xff0c;3302. 字典序最小的合法序列 四&#xff0c;3303. 第一个几乎相等子字符串的下标 一&#xff0c;3300. 替换为数位和以后的最小元素 本题直接暴力求解&a…