优美的二分模型

Posted smartljy

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了优美的二分模型相关的知识,希望对你有一定的参考价值。

在序列中寻找大于等于x的最小值

 

int findl(int x) 
{
    int l = 1, r = n + 1;
    while(l < r)
    {
        int mid = l + r >> 1;
        if(a[mid].pos >= x)
            r = mid;
        else
            l = mid + 1;
    }
  //mid取不到r,而r一开始取n+1有利于查找正确答案
}

 

在序列中寻找小于等于x的最大值

 

int findr(int x)                   
{
    int l = 0, r = n;
    while(l < r)
    {
        int mid = l + r + 1 >> 1;
        if(a[mid].pos<= x)
            l = mid;
        else
            r = mid - 1;
    }
   //原理同上
}

 

以上是关于优美的二分模型的主要内容,如果未能解决你的问题,请参考以下文章