二分模板

浮点数二分

double l=0,r=x;
while(r-l>1e-(k+2))//保留k位小数
{double mid=(l+r)/2;if(check(mid)){l=mid;}else{r=mid;}
}

整数二分

(区分)

int bsearch_1(int l,int r)
{while(l<r){int mid=l+r>>1;if(check(mid)){r=mid;}else{l=mid+1;}}return l;
}
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;
}

二分查找

又叫折半查找,是一种用于快速查找的工具,也可以说是一种技巧与思想,要有二分的思想,很多算法和优化都用了二分。

例题Acwing789. 数的范围

#include<iostream>
#include<algorithm>
using namespace std;
const int N=1e5+10;
int a[N];
int main()
{int n,m;cin>>n>>m;for(int i=0;i<n;i++){cin>>a[i];}while(m--){int k;cin>>k;int l=0,r=n-1;while(l<r)//寻找左边界{int mid=(l+r)/2;if(a[mid]<k){l=mid+1;}else{r=mid;}}if(a[l]==k){cout<<l<<" ";l=0,r=n-1;while(l<r)//寻找右边界{int mid=(l+r+1)/2;if(a[mid]>=k+1){r=mid-1;}else{l=mid;}}cout<<l<<endl;}else{cout<<"-1 -1"<<endl;}}return 0;
}

相关题

1.P2249 【深基13.例1】查找

2.P1873 [COCI 2011/2012 #5] EKO / 砍树

3. P1024 [NOIP2001 提高组] 一元三次方程求解

二分答案

解题的时候往往会考虑枚举答案然后检验枚举的值是否正确。若满足单调性,则满足使用二分法的条件。把这里的枚举换成二分,就变成了“二分答案”。

例题P1824 进击的奶牛

#include<iostream>
#include<cstdio>
#include<cstring>
#include<fstream>
#include<algorithm>
#include<cmath>
#include<deque>
#include<vector>
#include<queue>
#include<map>
#include<stack>
#include<set>
//#define int long long int
using namespace std;
const int N=1e5+10;
int a[N];
int n,k;
int check(int x)
{int num=1;//记录可放牛的数量 int s=a[1];//判断当前位置是否需要放牛 for(int i=1;i<=n;i++){if(a[i]-s>=x)//当前位置与前一个确定位置距离超过最大值 {num++;//在当前位置放一只牛 s=a[i];//更新位置 }} if(num>=k)//如果数量达到 {return true;}else{return false;}
}
signed main()
{cin>>n>>k;for(int i=1;i<=n;i++){cin>>a[i];}sort(a+1,a+1+n);//将牛棚排序 int l=0,r=(a[n]+a[1])/(k-1);//确定左右边界初始值 while(l<r)//二分模板 {int mid=(l+r+1)>>1;if(check(mid)){l=mid;}else{r=mid-1;}} cout<<l<<endl;return 0;
}

相关题

1.P2440 木材加工

2.P2678 [NOIP2015 提高组] 跳石头

3.P1182 数列分段 Section II

4.​​​​​​蓝桥杯2017年第八届真题-分巧克力

5.蓝桥杯2016年第七届真题-四平方和

二分(二分查找,二分搜索)相关推荐

  1. Java1.使用二分搜索算法查找任意N个有序数列中的指定元素。 2.通过上机实验进行算法实现。 3.保存和打印出程序的运行结果,并结合程序进行分析,上交实验报告。 4.至少使用两种方法进行编程,直接查

    1.使用二分搜索算法查找任意N个有序数列中的指定元素. 2.通过上机实验进行算法实现. 3.保存和打印出程序的运行结果,并结合程序进行分析,上交实验报告. 4.至少使用两种方法进行编程,直接查找/递归 ...

  2. Java冒泡,快速,插入,选择排序^_^+二分算法查找

    这段时间在学Java,期间学到了一些排序和查找方法.特此写来和大家交流,也方便自己的日后查看与复习. 1.下边是Java的主类: public class Get {public static voi ...

  3. 秒速五厘米(快速二分跳跃查找答案)

    秒速五厘米(快速二分跳跃查找答案) **秒速五厘米(快速二分跳跃查找答案) 让我们来看这道题(题目来源:吉首大学) #问题 D: 秒速五厘米 描述 樱花飘落的速度,每秒五厘米. 动漫<秒速五厘米 ...

  4. 【hiho】38 二分·二分答案【二分答案】

    传送门:二分·二分答案 分析 因为 两个相邻战略点之间可能不止一条航线,所以不能够用邻接矩阵来存储图. 用邻接表来存储,用数组模拟. 二分答案就是二分枚举答案,验证答案的正确性,每次验证可将范围缩小一 ...

  5. 二分查找 (二分搜索) 最通俗易懂的图解与实现

    二分查找场景 二分搜索用于在一个单调或者局部单调有序数组中查找一个符合某些条件的值,时间复杂度为O(logN) 二分查找原理图解 拿升序数组为例子进行解释,假设我们需要再数组中找到目标值key的下标. ...

  6. 1.2_linearbinary_search_顺序(线性)查找二分(折半)查找

    --- 顺序查找 ---线性查找.从列表第一个元素开始,顺序进行搜索直到找到元素或搜索到列表最后一个元素为止--- 二分查找 ---折半查找.从有序列表的初始候选区 li[0:n] 开始通过对 待查找 ...

  7. 【HIHOCODER 1133】 二分·二分查找之k小数

    描述 在上一回里我们知道Nettle在玩<艦これ>,Nettle的镇守府有很多船位,但船位再多也是有限的.Nettle通过捞船又出了一艘稀有的船,但是已有的N(1≤N≤1,000,000) ...

  8. 从0入门折半(二分)查找

    声明:因本人为非科班转码,个人水平有限,博客中难免有不准确之处,如有读者发现,本人恳请大家积极指出,本人也想知道自己的错误在哪里.欢迎大家一起指正,共同进步. 联系方式:3146367553@qq.c ...

  9. 【CF#192 A】Funky Numbers (二分,查找,二元组)

    题干: As you very well know, this year's funkiest numbers are so called triangular numbers (that is, i ...

  10. [leetcode] 4 寻找两个有序数组的中位数(二分+递归查找第K小数)(重要)

    问题描述 给定两个大小为 m 和 n 的有序数组 nums1 和 nums2. 请你找出这两个有序数组的中位数,并且要求算法的时间复杂度为 O(log(m + n)). 你可以假设 nums1 和 n ...

最新文章

  1. java值参_Java陷阱之慎用入参做返回值详解
  2. Python2的Json反序列化工具
  3. linux笔记本上安装了双显卡驱动(intel+nvidia)
  4. CountDownLatch简介
  5. python是怎么写出来的_请问这个怎么用python写出来
  6. 【数据结构与算法】之深入解析“H指数II”的求解思路与算法示例
  7. requestURI的组成部分
  8. python linux调试_python调试
  9. Auto.js 全命令整理(二) 对应用命令专题
  10. html表单的课后心得体会,web前端学习心得体会范文
  11. 20190826:(leetcode习题)反转链表
  12. 驾驭大数据,全民打飞机(转)
  13. 【已解决】SVN设置为中文 最全面
  14. 程序员阶段性成长的自我总结
  15. linux中永久别名 mac,mac 设置 ll 等alias 并永久生效
  16. Mysql 和 Oracle 的基本知识总结
  17. CF1238E Keyboard Purchase
  18. android+p手势操作,手势操作哪家强:Android P对比iPhone X
  19. 华为手机如何调时间显示_华为手机照相有时间日期显示怎样设置
  20. 矩阵的分解_QR分解

热门文章

  1. 如何理解和成为测试工程师
  2. 相对寻址方式与变址寻址方式的区别与联系
  3. 大数据【Java开发转大数据学习路线分解】(不断细化ing)
  4. C#常见容器ArrayList、List、HashSet、Hashtable 、Dictionary、Stack、Queue
  5. 浅谈用企业微信生态做私域流量运营的策略!
  6. 精睿 ESS EAV 【中文商业特别版+纯净版-官方升级】【2.11更新3.0.685.0】
  7. 通过虚拟机模拟linux操作系统
  8. RFID标签的安全机制——LCAP协议的C++代码实现
  9. Zigbee安全概述
  10. NEXTCHIP-图像优化师