最高赞题解有地方不太懂(二分)

P1678 烦恼的高考志愿

LukeSu @ 2022-04-02 19:58:41

最后查找完后,那么求录取分数线数组中的第l-1个元素和录取分数线数组中的第l个元素他们两与那位同学的估分的绝对值,那么答案就累加两个绝对值中最小的。

为什么求的是第 ll-1 个元素与其绝对值之差呢?为什么不求第 l + 1个元素呢?没准第l + 1个元素与其绝对值之差更小?


by Mandel520 @ 2022-04-02 20:41:37

因为二分查找的是大于估分的最小值:

if(a[mid]<=b[i])//如果录取分数线数组中的第mid个元素小于或等于那位同学的分数
            {
                l=mid+1;//左边界就往右移
            }

因此 a[l]大于估分的最小值, a[l-1]小于等于估分的最大值

(1) 如果 a[l-1] 等于估分, 则答案是 a[l-1]

(2)如果 a[l-1] 小于估分, 则答案是 a[l-1]a[l] 中的一个

不管是那种情况, 都和 a[1+1] 没有关系


|