二分与前缀和

二分

难点:二分的边界问题

整数二分核心思想

  1. 确定一个区间,使得目标值一定在区间中。

  2. 找一个性质满足:(对于百分之95的二分拥有这个性质)

    • 性质具有二段性。
    • 答案是二段性的分界点。

整数二分模板

对于整数二分我们分为两类
有的小伙伴就要问了:为什么是分成2类而不是1类3类呢?
答:我们来看这么一种情况
对于一组序列如下:要求找到值为5的第一个数和最后一个数,返回对应下标。

3 4 5 5 5 8 10
数组下标 0 1 2 3 4 5 6

不难发现我们需要两个模板,使得一个板子二分结果为2,一个板子二分结果为4。


代码如下:

bool check(int x) {/* ... */} // 检查x是否满足某种性质

// 区间[l, r]被划分成[l, mid]和[mid + 1, r]时使用:
int bsearch_1(int l, int r)
{
while (l < r)
{
int mid = l + r >> 1;
if (check(mid)) r = mid; // check()判断mid是否满足性质
else l = mid + 1;
}
return l;
}
// 区间[l, r]被划分成[l, mid - 1]和[mid, r]时使用:
int bsearch_2(int l, int r)
{
while (l < r)
{
int mid = l + r + 1 >> 1;
if (check(mid)) l = mid;
else r = mid - 1;
}
return l;
} 作者:yxc
链接:https://www.acwing.com/blog/content/277/
来源:AcWing
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

整数二分步骤总结:

  1. 找一个区间[L,R],使得答案一定在该区间中。
  2. 找一个判断条件,使得该判断条件具有二段性,并且答案一定是该二段性的分界点。
  3. 分析终点M在在该判断条件下是否成立,如果成立,考虑答案在哪个区间。
  4. 如果更新方式写的是R=Mid,则不用做任何处理;如果更新方式写的是L=Mid,则需要再计算Mid时加上1。

题目链接

789. 数的范围 - AcWing题库

下面是本节课总的题单,涉及前缀和等可以先不看跳过。

实数二分核心思想:

实数二分相对于整数比较简单,因为中点是基本可以取到的,没有整数一会加1,一会减去1这么绕。

加一减一无需考虑,可以说是非常简单了(滑稽,第一遍写还是WA了)。只需注意浮点数精度丢失问题,取误差在1e-8即可。

题目链接

790. 数的三次方根 - AcWing题库

三分法思想:

用的不多,这里简单提一下。

对于下图的函数,我们为了找值可以采取对斜率二分(求导即可)。或者,采取下图的三分法,当重复多次后,l与r无线逼近即可。

(acwing蓝桥杯c++AB组)2.1 二分的更多相关文章

  1. (acwing蓝桥杯c++AB组)1.1 递归

    (acwing蓝桥杯c++AB组)1.课程介绍+递归 文章目录 (acwing蓝桥杯c++AB组)1.课程介绍+递归 课程介绍 第一讲 递归与递推 递归 引入 递归的底层调用顺序 例题与练习 课程介绍 ...

  2. (acwing蓝桥杯c++AB组)1.2 递推

    1.2 递推与递归 文章目录 1.2 递推与递归 位运算相关知识补充 pair与vector相关知识补充 题目目录与网址链接 下面的讲解主要针对这道题目的题解AcWing 116. 飞行员兄弟 - A ...

  3. 2019第十届蓝桥杯C++B组题解(赛后重写的,不确保答案正确性,仅供参考)

    先说一下这次的感受吧,我们考场比较乱,开始比赛了,还有的电脑有故障,(向这些人发出同情),第一次认真参加比赛,真正比赛的时候感觉没有那么正式,很乱,各种小问题,(例如博主就没找到题目在哪里,找到后又不 ...

  4. 第八届蓝桥杯java b组第六题

    标题:最大公共子串 最大公共子串长度问题就是:求两个串的所有子串中能够匹配上的最大长度是多少. 比如:"abcdkkk" 和 "baabcdadabc",可以找 ...

  5. 蓝桥杯java高职组

    标题1: 猜年龄     美国数学家维纳(N.Wiener)智力早熟,11岁就上了大学.他曾在1935~1936年应邀来中 国清华大学讲学.     一次,他参加某个重要会议,年轻的脸孔引人注目.于是 ...

  6. 蓝桥杯比赛javaB组练习《牌型种数》

    牌型种数 小明被劫持到X赌城,被迫与其他3人玩牌.一副扑克牌(去掉大小王牌,共52张),均匀发给4个人,每个人13张.这时,小明脑子里突然冒出一个问题:如果不考虑花色,只考虑点数,也不考虑自己得到的牌 ...

  7. 49-2015年第6届蓝桥杯Java B组

    1.三角形面积 如图1所示.图中的所有小方格面积都是1. 那么,图中的三角形面积应该是多少呢? 请填写三角形的面积.不要填写任何多余内容或说明性文字.   image.png   计算方法: 8 * ...

  8. 46-2016 蓝桥杯 java B 组

    1.煤球数目 有一堆煤球,堆成三角棱锥形.具体: 第一层放1个, 第二层3个(排列成三角形), 第三层6个(排列成三角形), 第四层10个(排列成三角形), .... 如果一共有100层,共有多少个煤 ...

  9. 2012年第三届蓝桥杯Java本科组省赛试题解析

    题目地址:https://wenku.baidu.com/view/326f7b4be518964bcf847c96.html?rec_flag=default    => 百度文档 题目及解析 ...

随机推荐

  1. 标签显示模式(display)

    非洲黑人: 皮肤内黑色素含量高,以吸收阳光中的紫外线,保护皮肤内部结构免遭损害,头发象羊毛一样卷曲,使每根卷发周围都有许多空隙,空隙充满空气,卷发有隔热作用. 欧洲白人: 生活寒带或着是说常年温度较低 ...

  2. uniap tab list 滑动

    效果如下 <uni-popup ref="bankListAll" type="dialog"> <ty-mutiple-select :mu ...

  3. Windows安装RabbitMQ过程及相关问题

    一.下载 1.首先需要下载erlang,下载地址:http://www.erlang.org/downloads 2.其次需要下载RabbitMQ,下载地址:https://www.rabbitmq. ...

  4. pyrealsense2学习

    如何得到realsense设备信息 前提:将D455连接在电脑上,并且已经下载好 Realsense Viewer 打开Realsense Viewer--> Info, 便可得到相机的一些参数 ...

  5. Go vs Java vs C# 语法对比

    目录 1. 说明 2. 对比 2.1 关键字(keywords) 2.1.1 Go 2.1.2 Java 2.1.3 C# 2.1.4 小结 2.2 基本数据类型 2.2.1 Go 基本数据类型 2. ...

  6. Spark——统计文本中单词出现的次数

    示例一:统计所有单词出现的次数 1.在本地创建文件并上传到hdfs中 #vin data.txt //将文件上传到hadoop的根目录下 #hdfs dfs -put data.txt / 2.在sp ...

  7. 2021美团安洵暗泉re部分复现

    typora-copy-images-to: ./ 安洵杯 sign_in 贪吃蛇 虽然没啥用 smc解密拿一下flag相关的部分 倒着看看sub_40105F 和sub_401055函数 写出解密算 ...

  8. SpringCloud微服务实战——搭建企业级开发框架(三十七):微服务日志系统设计与实现

      针对业务开发人员通常面对的业务需求,我们将日志分为操作(请求)日志和系统运行日志,操作(请求)日志可以让管理员或者运营人员方便简单的在系统界面中查询追踪用户具体做了哪些操作,便于分析统计用户行为: ...

  9. nginx拒绝国外IP访问

    nginx拒绝国外IP访问方法很多,比如iptables,geoip模块,域名解析等等.这些方法不会相互冲突,可以结合起来一起使用. 今天来教大家利用两个小方法解决  域名解析禁止掉海外IP访问网站. ...

  10. Linux查看进程的4种方法

    转至:https://www.cnblogs.com/hml-blog-com/p/11558369.html 进程是在 CPU 及内存中运行的程序代码,而每个进程可以创建一个或多个进程(父子进程). ...