首页 > 其他分享 >二分答案的实际应用与变式

二分答案的实际应用与变式

时间:2023-04-08 19:46:07浏览次数:33  
标签:二分 begin 变式 int bound st 答案

一.二分查找之于STL

lower_bound()可以寻找第一个大于等于的

upper_bound()可以寻找第一个大于的

返回直应用auto承载,或在获取指针时-数组名/-vec.begin()

distance(st.begin(),st.end())也可以获得其中元素个数

和以上两个函数相作用,其用法不言而喻

二.二分法求函数值

使用前提:函数在该区间内有单调性

int bs(int l,int r)
{
    int mid;
    while(l<=r)
    {
        mid=l+(r-l)/2;
        if(check(mid))
        {
            l=mid+1;
            ans=mid;
        }
        else
        {
            r=mid-1;
        }
    }
}//当取值为int类型时的用法

double bs(double l,double r)
{
    double mid;
    while(l<r)
    {
        mid=(l+r)/2;
        if(check(mid))
        {
            l=mid;
        }
        else
        {
            r=mid;
        }
    }
    return mid;
}//当取值为double类型时的用法

 

标签:二分,begin,变式,int,bound,st,答案
From: https://www.cnblogs.com/maysoul/p/17299094.html

相关文章

  • LeetCode习题——在排序数组中查找元素的第一个和最后一个位置(二分查找)
    在排序数组中查找元素的第一个和最后一个位置力扣链接:在排序数组中查找元素的第一个和最后一个位置题目给你一个按照非递减顺序排列的整数数组nums,和一个目标值target。请你找出给定目标值在数组中的开始位置和结束位置。如果数组中不存在目标值target,返回[-1,-1]。你......
  • 数据结构 玩转数据结构 12-3 检查二分搜索树性质和平衡性
    0课程地址https://coding.imooc.com/lesson/207.html#mid=14348 1重点关注1.1代码草图   1.2代码实现检查二分搜索树和平衡性利用了二分搜索树中序遍历由小到大的特性 和平衡二叉树的平衡因子大于1的特性//1校验二分搜索......
  • python中的二分查找
    二分查找的前提是查找的数据按照顺序排序二分查找的核心思想是递归#arr:查找的对象#left:arr的左边界#right:arr的右边界#x:需要查找的数defbinary_search(arr,left,right,x):#左边界小于等于右边界ifleft<=right:#得到中位数mid=int((lef......
  • [蓝桥杯 2021 国 AB] 翻转括号序列(线段树上二分)
    [蓝桥杯2021国AB]翻转括号序列题目描述给定一个长度为\(n\)的括号序列,要求支持两种操作:将\(\left[L_{i},R_{i}\right]\)区间内(序列中的第\(L_{i}\)个字符到第\(R_{i}\)个字符)的括号全部翻转(左括号变成右括号,右括号变成左括号)。求出以\(L_{i}\)为左端点......
  • HDU - 3081 Marriage Match II(二分图最大匹配 + 并查集)
    题目大意:有n个男生n个女生,现在要求将所有的男女配对,所有的男女都配对的话,算该轮游戏结束了。接着另一轮游戏开始,还是男女配对,但是配对的男女不能是之前配对过的。问这游戏能玩多少轮男女能配对的条件如下1.男女未曾吵架过。2.如果两个女的是朋友,那么另一个女的男朋友可以和......
  • HDU - 3715 Go Deeper (二分 + 2-SAT)
    题目大意:给出一个递归函数,问这个递归函数最多能递归几层解题思路:二分枚举递归层数,然后依此建边如果给出的c[i]为0时,那么x[a[i]]和x[b[i]]中的其中一个要为真,连边即为!a[i]->b[i],!b[i]->a[i]如果给出的c[i]为1时,那么x[a[i]]和x[b[i]]两个要么都为真,要么都为假,连边即为a[i]->b[i......
  • 二分模板
    查找左边界while(l<r){intmid=l+r>>1;if(中点在右边)r=mid;elsel=mid+1;}查找右边界while(l<r){intmid=(l+r>>1)+1;if(中点在左边边)l=mid;elser=mid-1;}查找找某个数:上边两个都行查找实数wh......
  • Vue进阶(四十七):面试必备:2023 Vue经典面试题总结(含答案)
    一、什么是MVVM?MVVM是Model-View-ViewModel的缩写。MVVM是一种设计思想。Model层代表数据模型,也可以在Model中定义数据修改和操作的业务逻辑;View代表UI组件,它负责将数据模型转化成UI展现出来,ViewModel是一个同步View和Model的对象。在MVVM架构下,View和Model之间并没......
  • 《Python编程快速上手—让繁琐工作自动化》实践项目答案:第六章
    实践项目表格打印编写一个名为printTabel()的函数,它接受字符串的列表的列表,将它显示在组织良好的表格中,每列右对齐,假定所有内层列表都包含同样数目的字符串,例如:你的printTable()函数将打印出:点击查看代码tableData=[['apples','oranges','cherries','banana'],......
  • 51nod 1799 二分答案
    1799二分答案基准时间限制:1秒空间限制:131072KB分值:40难度:4级算法题收藏关注lyk最近在研究二分答案类的问题。对于一个有n个互不相同的数且从小到大的正整数数列a(其中最大值不超过n),若要找一个在a中出现过的数字m,一个正确的二分程序是这样子的:l=1;r=n;mid=(l+r)/......