算法模板 3.二分查找

news2025/7/18 23:40:59

二分查找

789. 数的范围 - AcWing题库

在这里插入图片描述

  • check函数
  • (l+r(这里要不要+1))>> 1 ,要根据具体情况,如果是r = mid的话l+r就不用+1,l = mid的话就要+1
#include <bits/stdc++.h>
using namespace std;
const int N = 100010;
int a[N];

int main(){
    ios::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
    int n, q;
    cin >> n >> q;
    for(int i = 0; i < n; i++) cin >> a[i];
    
    while(q--){
        int k; 
        cin >> k;
        
        int l = 0, r = n - 1;
        while(l < r){
            int mid = (l + r) / 2;
            if(a[mid] >= k) r = mid; // 找到第一个 >= k的元素
            else l = mid + 1;
        }
        if(a[l] != k){
            cout << "-1 -1" << endl;
            continue;
        }
        cout << l << ' ';
        l = 0, r = n - 1;
        while(l < r){
            int mid = (l + r + 1) / 2;
            if(a[mid] <= k) l = mid; // 找到最后一个 <= k 的元素
            else r = mid - 1;
        }
        cout << r << endl;
        
    }
    
    return 0;
}

浮点数二分

关键点在于当左边界和右边界足够接近,即差值小于1e-8(这里一般预留100倍的精度)时,则跳出循环

#include <bits/stdc++.h>
using namespace std;
int main(){
    double n;
    cin>>n;
    double l=-100,r=100;
    while(r-l>1e-8){//精度足够了
        double mid=l+(r-l)/2;
        if(mid*mid*mid-n<0){
            l=mid;//简单在于不需要考虑边界,直接移到对应位置即可
        }
        else r=mid;//简单在于不需要考虑边界,直接移到对应位置即可
    }
    printf("%.6lf",mid);//保留6位小数,因此精度给100倍:1e-8
    return 0;
}

二分答案

已知答案具有单调性,根据答案估计其上下界,然后进行二分,自定义check函数,在check函数中判断这个答案mid是否合法,然后移动边界进行二分。

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

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

相关文章

Android Retrofit添加header参数

前言 有些接口需要单独设置header参数 作为标记 如何灵活 或者统一设置请求header呢 注解Headers 顾名思义 Headers是指多个header 放在对象里 统一管理 //获取xxx Headers({"Content-Type: application/json","User-Agent: test"}) POST("xxxx&q…

小程序:类型三级分类

一、效果图片 二、代码 <template><view class"customPosition"><!-- header --><navBar :border"false" :hasBack"true" :title"titleName"></navBar><!-- 查询 --><view class"search…

JavaWeb之打包失败解决方案

情况描述&#xff1a; ---打包不成功 这时点击Maven中的蓝色小闪电&#xff1a; 小闪电的意思&#xff1a;是否跳过测试。点击选中就可以跳过&#xff0c;打包的时候就可以跳过测试代码。 再次打包后即可成功&#xff1a; 查看具体打包后的jar包&#xff1a; 打包后&#x…

openGaussdb5.0单点企业版部署_Centos7_x86

本文档环境&#xff1a;CentOS7.9 x86_64 4G1C40G python2.7.5 交互式初始化环境方式 介绍 openGauss是一款开源关系型数据库管理系统&#xff0c;采用木兰宽松许可证v2发行。openGauss内核深度融合华为在数据库领域多年的经验&#xff0c;结合企业级场景需求&#xff0c;持续…

Ubuntu远程连接登录信息解读(ubuntu登录信息、远程登录信息)

文章目录 1. Welcome to Ubuntu 20.04.4 LTS (GNU/Linux 5.4.0-100-generic aarch64)2. 三个链接是官方提供的文档、管理工具和技术支持3. System information as of Thu 01 Feb 2024 03:30:45 PM HKT4. System load: 1.16&#xff1a;系统负载指数5. Processes: 1096系统正在运…

虹科技术|一文详解IO-Link Wireless技术如何影响工业无线自动化

导读&#xff1a;在工业无线自动化的飞速发展进程中&#xff0c;IO-Link Wireless技术成为了一项具有颠覆性的创新。它将IO-Link协议与无线连接完美结合&#xff0c;解决了传统通信技术在工业应用中的痛点。本文将深入解析IO-Link Wireless技术的原理、应用领域、优势以及实际案…

vue3集成video.js

就长这个样子&#xff0c;该有的功能都有了 首先安装 npm install video.js 然后创建一个vue文件 <template><div class"full" style"padding: 10px;overflow: auto;"><video :id"videoId" class"video-js"><…

LeetCode.1686. 石子游戏 VI

题目 题目链接 分析 本题采取贪心的策略 我们先假设只有两个石头a,b&#xff0c; 对于 Alice 价值分别为 a1,a2&#xff0c; 对于 Bob 价值而言价值分别是 b1,b2 第一种方案是 Alice取第一个&#xff0c;Bob 取第二个&#xff0c;Alice与Bob的价值差是 c1 a1 - b1&#xf…

Django模型(八)

一、修改数据 先获取对象,通过对象属性更新数据,再保存 (更新单一数据)通过QuerySet的update函数更新数据 (更新多条数据) #单条记录修改 save c = Cook.objects.get(pk=1) c.name = 安妮 c.save()# 更新多个值 update Cook.objects.filter(sect=粤菜).update(level=5)1.1、…

游戏APP开发:从创意到实现的全过程

随着智能手机的普及和移动互联网的发展&#xff0c;游戏APP市场日益繁荣。游戏APP开发已经成为一个热门行业&#xff0c;吸引了众多开发者和创业者的关注。本文将介绍游戏APP开发的全过程&#xff0c;包括创意、策划、设计、开发、测试和发布等环节。 一、创意 游戏APP开发的…

测试access和trunk口的区别(华为)

思科设备参考&#xff1a;测试access和trunk口的区别&#xff08;思科&#xff09; 一&#xff0c;实验目的 实现同一 Vlan 内的主机互通&#xff0c;不同 Vlan 间的主机隔离。 二&#xff0c;配置前测试 PC1分别ping PC2、PC3、PC4都能通&#xff0c;因为四台PC默认同处于v…

2024年美赛F题Problem F Reducing Illegal Wildlife Trade减少非法野生动物贸易的完整思路代码分享

非法的野生动物贸易会对我们的环境产生负面影响&#xff0c;并威胁到全球的生物多样性。据估计&#xff0c;它每年涉及高达265亿美元&#xff0c;被认为是全球第四大非法交易。[1]你将开发一个由数据驱动的5年项目&#xff0c;旨在显著减少非法野生动物贸易。你的目标是说服一个…

2024 美国大学生数学建模竞赛 美赛(D题)五大湖水资源调配问题 国际大学生数学建模竞赛| 建模秘籍文章代码思路大全

铛铛&#xff01;小秘籍来咯&#xff01; 小秘籍希望大家都能轻松建模呀&#xff0c;华数杯也会持续给大家放送思路滴~ 抓紧小秘籍&#xff0c;我们出发吧~ 完整内容可以在文章末尾领取&#xff01; 问题一&#xff1a;建立一个包括五大湖和连接从苏必利尔湖到大西洋的河流的…

软件工程(最简式总结)

目录 第一章:概述 1.软件危机的表现原因 2.常见的软件开发方法包括&#xff1a; 3.软件工程基本原则 4.软件工程三要素 5.设计模式的分类 6.针对变换型数据流设计步骤 7.针对事务型数据流设计步骤 第二章&#xff1a;软件过程 1.软件生命周期 2.软件过程模型 &…

Maven dependency中的scope

Maven的一个哲学是惯例优于配置(Convention Over Configuration), Maven默认的依赖配置项中&#xff0c;scope的默认值是compile。 scope的分类 compile&#xff08;默认&#xff09; 含义&#xff1a; compile 是默认值&#xff0c;如果没有指定 scope 值&#xff0c;该元素…

SpringBoot引入主盘探活定时任务

主盘探活通常是指检查存储设备&#xff08;例如硬盘&#xff09;是否可读写&#xff0c;但在Java中并没有直接针对硬件级别的磁盘探活API。然而&#xff0c;我们可以模拟一个场景&#xff0c;即检查某个目录或文件是否可以被Java程序正常读写&#xff0c;以此作为主盘活跃的一个…

OSPF 协议

OSPF 开放式最短路径优先协议 形容&#xff1a; 无类别链路状态协议&#xff1a; 无类别 ---- 存在掩码 IGP 内部网关协议 动态路由协议 一、链路状态协议(LS) OSPF 协议 隶属于 链路状态协议。 区别&#xff1a; 距离矢量协议(DV)&#xff1a;运行距离矢量协议的路由器…

2024数学建模美赛C题详细代码思路手把手教学

问题分析 问题围绕2023年温网男单决赛中&#xff0c;20岁的西班牙新星卡洛斯阿尔卡拉兹击败36岁的诺瓦克德约科维奇的比赛。德约科维奇自2013年以来首次在温布尔登输球&#xff0c;结束了他在大满贯赛事中的杰出表现。这场比赛被认为是一场精彩的较量&#xff0c;经历了多次势头…

备战蓝桥杯---数据结构与STL应用(进阶1)

让我们先来看一看map的基础应用吧&#xff1a; 下面是实现代码&#xff1a; #include<bits/stdc.h> using namespace std; typedef map<int,multiset<int> > line; map<int,multiset<int> >mx; map<int,multiset<int> >my; int n,m…

2024美国大学生数学建模E题财产保险的可持续模型详解思路+具体代码

2024美国大学生数学建模E题财产保险的可持续模型详解思路具体代码 前言 很快啊&#xff01;啪的一下拿到题目就开始做题&#xff01;简单介绍一下我自己&#xff1a;博主专注建模五年&#xff0c;参与过大大小小数十来次数学建模&#xff0c;理解各类模型原理以及每种模型的建…