警示后人:关于二分上界问题(WA ON 8)
查看原帖
警示后人:关于二分上界问题(WA ON 8)
578029
ivyjiao楼主2024/11/3 17:35

上界应为 1e8+1,而不是 1e8,后者会导致 1e8 刚好二分不到。

WA CODE:

int q2(int L,int R,int k){
    int l=0,r=1e8;
    while(l<r){
        int mid=l+r>>1;
        if(q1(1,1,n,L,R,mid)-1<k) l=mid+1;
        else r=mid; 
    }
    return l-1;
}

因为你最后返回的是 l-1,而任意时刻 l<=r,所以永远不会返回 1e8 这个数

2024/11/3 17:35
加载中...