【AcWing】1.1.3二分搜索

news2024/11/16 7:36:58

一、二分搜索

1、查找数的范围

  • 原题链接
    在这里插入图片描述
     这道题看似是二分搜索的题目,实则就是二分搜索。与一般的搜索不同的是,若查找元素重复,则分别返回重复元素的左端下标和右端下标,若不存在则返回“-1 -1。我们常用的二分搜索是返回的重复元素的左端下标,稍作修改,则可以返回右端元素下标。
#include<iostream>
#include<stdio.h>
using namespace std;
const int N = 1e5+10;
int a[N];

//若存在重复元素,则返回左边界
int searchLeft(int q[],int l,int r,int x)
{
    while(l<r)
    {
        int mid = l+r>>1;
        if(q[mid]<x)
        {
            l = mid+1;
        }
        else{
            r = mid ;
        }
    }
    return l;
}
//若存在重复,则返回右边界
int searchRight(int q[],int l,int r,int x)
{
    while(l<r)
    {
        int mid = (l+r+1)>>1;
        if(q[mid]<=x)
            l = mid;
        else

            r = mid-1;
    }
    return r;
}
int main()
{
    int n,m;
    cin>>n>>m;
    for(int i=0;i<n;i++)
    {
        cin>>a[i];
    }
    while(m--)
    {
        int num;
        cin>>num;
        //搜索左边界
        int pos1 = searchLeft(a,0,n-1,num);
        //搜索有边界
        if (a[pos1]!=num)
        {
            cout<<"-1 -1"<<endl;
        }
        else{
            int pos2 = searchRight(a,0,n-1,num);
            cout<<pos1<<' '<<pos2<<endl;
        }
    }
    system("pause");
    return 0;
}

2、数的三次方根

  • 原题链接
  • 在这里插入图片描述
     这道题可以用二分搜索的方法,来搜索一个数的三次方根的近似解。
#include<iostream>
using namespace std;
int main()
{
    double x,l = -100000.0,r = 100000.0;
    cin>>x;
    while(r-l>1e-8)
    {
        double mid = (l+r)/2.0;
        if(mid*mid*mid< x)
        {
            l = mid;
        }
        else
            r = mid;
    }
    printf("%.6f\n",r);
    return 0;
}

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

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

相关文章

在Vue.js中,什么是单文件组件(Single File Component)?它的结构是怎样的?

聚沙成塔每天进步一点点 ⭐ 专栏简介 前端入门之旅&#xff1a;探索Web开发的奇妙世界 欢迎来到前端入门之旅&#xff01;感兴趣的可以订阅本专栏哦&#xff01;这个专栏是为那些对Web开发感兴趣、刚刚踏入前端领域的朋友们量身打造的。无论你是完全的新手还是有一些基础的开发…

基于物联网、大数据、云计算、人工智能等技术的智慧工地源码(Java+Spring Cloud +UniApp +MySql)

智慧工地是指利用物联网、大数据、云计算、人工智能等技术手段&#xff0c;为建筑施工现场提供智能硬件及物联网平台的解决方案&#xff0c;实现建筑工地的实时化、可视化、多元化、智慧化、便捷化。智慧工地的建设目标是实现全天候的管理监控&#xff0c;提高施工效率和质量&a…

【机器学习合集】模型设计之分组网络 ->(个人学习记录笔记)

文章目录 分组网络1. 什么是分组网络1.1 卷积拆分的使用1.2 通道分离卷积的来源1.3 GoogLeNet/Inception1.4 从Inception到Xception(extreme inception)1.5 通道分组卷积模型基准MobileNet 2. 不同通道分组策略2.1 打乱重组的分组2.2 多尺度卷积核分组2.3 多分辨率卷积分组2.4 …

《云计算白皮书(2023年)》丨三叠云

✦ ✦✦ ✦✦ ✦✦ ✦ 这是中国信息通信研究院第九次发布云计算白皮书。本次白皮书聚焦过去一年多来云计算产业的新发展新变化&#xff0c;总结梳理国内外云计算政策、市场、技术、应用等方面的发展特点&#xff0c;并对未来发展进行展望。【目 录】 一、全球云计算发展概述…

【UnityGUI】UGUI的六大组件和三大基础控件详解

&#x1f468;‍&#x1f4bb;个人主页&#xff1a;元宇宙-秩沅 &#x1f468;‍&#x1f4bb; hallo 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍&#x1f4bb; 本文由 秩沅 原创 &#x1f468;‍&#x1f4bb; 收录于专栏&#xff1a;UI_…

vue中使用deck.gl

deck,gl网址&#xff1a;Home | deck.gl 因为deck.gl是国外的技术&#xff0c;国外最流行的框架是react&#xff0c;所以deck.gl有为react提供的地图组件&#xff0c;没有为vue提供&#xff0c;并且还需要翻墙。所以想用vue使用这个还是有一定难度的。 除了用到deck.gl之外还…

【docker】数据卷:docker run和k8s同步宿主机与容器文件的两种方法

前言 Docker容器卷是一个特殊目录&#xff0c;它存放在宿主机的文件系统中&#xff0c;可供一个或多个容器使用。这种卷绕过了联合文件系统&#xff08;Union File System&#xff09;&#xff0c;可以提供很多有用的特性。例如&#xff0c;对数据卷的修改会立即生效&#xff…

如何用ATECLOUD进行芯片各项性能指标的测试?

功能测试&#xff1a;主要涵盖输入测试向量和响应的一致性。功能测试可以覆盖极高比例的逻辑电路的失效模型。 Parametric测试&#xff1a;有DC和AC测试。DC主要是短路(short)、开路(open)、最大电流(maximmum current)、漏电流(leakage)、输出驱动电流(output drivel current…

MSQL系列(十) Mysql实战-Join驱动表和被驱动表如何区分

Mysql实战-Join驱动表和被驱动表如何区分 前面我们讲解了Mysql的查询连接Join的算法原理, 我发现大家都知道小表驱动大表,要让小表作为驱动表, 现在有2个问题 查询多表, 到底哪个是驱动表?哪个是被驱动表, 如何区分?索引如何优化,到底是加在驱动表上,还是被驱动表上? &…

UDP网络编程的接受与发送信息

/发送端B>可以接受数据 public class UDPSenderB {public static void main(String[] args) throws IOException {//创建一个DatagramSocket 对象&#xff0c;准备发送和接受数据DatagramSocket socket new DatagramSocket(9998);//将需要发送的数据&#xff0c;封装到Data…

在excel中如何打出上标、下标

例如&#xff0c;想把A2的2变为下标。 在单元中输入内容&#xff1a; 选中2&#xff1a; 右键单击&#xff0c;然后点击“设置单元格格式”&#xff1a; 在特殊效果的下面勾选“下标”&#xff0c;然后点击下面的“确定”按钮&#xff1a; 就将2变为下标了&#xff1a;…

HTML标题、段落、文本格式化

HTML标题&#xff1a; 在HTML文档中&#xff0c;标题是很重要的。标题是通过<h1> - <h6标签进行定义的&#xff0c;<h1> 定义最大的标题&#xff1b;<h6>定义最小的标题。 <hr> 标签在HTML页面中用于创建水平线&#xff0c;hr元素可用于分隔内容。…

家政服务系统小程序app开发功能架构;

家政服务小程序系统&#xff0c;轻松搭建上门服务小程序。支持H5与小程序双端&#xff0c;还能DIY页面。根据您的需求&#xff0c;我们可定制开发家政服务小程序系统。想添加多种服务类目、优惠专区以及IM即时沟通功能&#xff1f;没问题&#xff0c;我们支持&#xff01;想要快…

测试用例设计——WEB通用测试用例

现在项目做完了&#xff0c;我觉得还是有必要总结一下&#xff0c;学习到的内容。毕竟有总结才能有提高嘛&#xff01;总结一下通用的东西&#xff0c;不管什么项目基本都可能会遇到&#xff0c;有写地方也有重复的或者有的是按照个人的习惯来总结的不一定都对&#xff0c;有不…

数据结构(超详细讲解!!)第十八节 串(静态存储)

1.串的定义 串&#xff1a;由零个或多个字符组成的有限序列&#xff0c;一般记为&#xff1a;s“a1a2...an” (n≥0)。 ai可以是字母、数字或其他字符。 串中字符的个数n称为串的长度。 空串&#xff1a;零个字符&#xff0c;即长度为零的串称为空串&#xff0c;用或””表…

Python爬虫实战案例——第七例

文章中所有内容仅供学习交流使用&#xff0c;不用于其他任何目的&#xff01;严禁将文中内容用于任何商业与非法用途&#xff0c;由此产生的一切后果与作者无关。若有侵权&#xff0c;请联系删除。 目标&#xff1a;LI视频采集 地址&#xff1a;aHR0cHM6Ly93d3cucGVhcnZpZGVv…

2023最新最全Web自动化测试面试题

1、Selenium 中 hidden 或者是 display none 的元素是否可以定位到&#xff1f; 不可以。可以写 JavaScript 将标签中的 hidden 先改为 0&#xff0c;再进行定位元素。 2、Selenium 中如何保证操作元素的成功率&#xff1f;也就是说如何保证我点击的元素一 定是可以点击的&am…

Redis的特性和应用场景

目录 Redis的特性 内存存储数据 可编程性 可扩展性 持久化 水平扩展性 高可用性 为什么redis是快的 Redis的应用场景 数据库 缓存和会话存储 消息队列 redis是一个客户端服务器结构的程序 Redis是一个在内存中存储数据的中间件,能够用于作为数据库,数据缓存等,能在…

leetcode-字符串

1.反转字符串LeetCode344. 20230911 难度为0&#xff0c;此处就不放代码了 注意reverse和swap等一系列字符串函数什么时候该用&#xff0c;记一记库函数 swap可以有两种实现&#xff0c;涨知识了&#xff0c;除了temp存值还可以通过位运算&#xff1a;s[i] ^ s[j]; s[j] ^ s[i…

使用electron创建桌面应用及常见打包错误解决

一、基本要求 在使用Electron进行开发之前&#xff0c;您需要安装 Node.js。 要检查 Node.js 是否正确安装&#xff0c;请在您的终端输入以下命令&#xff1a; node -v npm -v这两个命令应输出了 Node.js 和 npm 的版本信息。 二、创建应用 1、首先创建一个文件夹 mkdir …