zoukankan      html  css  js  c++  java
  • 二分查找

    一般数据比较大的时候,让你找满足条件的最小值中的最大值,或者最大的最小值可以用二分;
    设下限为0,上限的最大的条件;

    bool judge(T mid)//判断是否可以满足条件,可以返回true
    {
        ·······
    }
    T left=0,right=sum/n,mid;
    while(right-left>k)//k看具体情况
    {
        mid=(left+right)/2;
        if(judge(mid))
        left=mid;
        else
        right=mid;
    }
    
    

    最后求出来的就是所需要的值;

    如果K是1,也就是题目要求的是整数的时候,要加上

    while(right) left++;
    left--;
    

    因为这时可能会有特殊的没法考虑,加上这个才能确定真正的答案!

    还有一个stl函数binary_search 直接调用函数,在一个数组里面的时候可以用

    bool binary_search(a,q+n,ans)(a是数组,n是长度,ans是要找的值)a要先sort;

  • 相关阅读:
    input 蓝边
    4.【ac自动机】模式串匹配
    3.【二叉树】最近公共祖先
    2.【动态规划】最长回文子串
    1. 【线段树】
    DbUtil
    oauth2
    cas
    Spring-security-web
    JSON Web Tokens
  • 原文地址:https://www.cnblogs.com/wzl19981116/p/9354012.html
Copyright © 2011-2022 走看看