尺取法(二分法)有两种扫描方向:
(1)反向扫描:
i和j方向相反,i从头到尾,j从尾到头,在中间相会
(2)同向扫描:
i和j方向相同,都从头到尾,但是速度不同
实际上在这里也可以使用多指针--比如--"洛谷P1102 A-B数对";
三分法分为两种:
前提:所解决的函数是单调递增的函数
<1>三等分法: mid1,mid2各取左侧和右侧的三等分点
例题:洛谷P3382实数三分法
有以下几种情况:
(1)mid1<mid2
此时又含有两种情况--mid2在解左侧,mid2在解右侧
但无论哪种情况,解始终在mid1右侧,
此时让mid1成为新的L;R不变,继续三分的过程
(2)mid1>mid2
此时又含有两种情况--mid1在解左侧,mid1在解右侧
但无论哪种情况,解始终在mid2左侧,
此时让mid2成为新的R;L不变,继续三分的过程
<2>近似三等分法:mid1和mid2分别取到(L+R)/2--也就是中间点左侧或右侧的一个点,然后按照三等分的方法继续向下搜查
ps:也许你会感到迷惑--为什么可以直接确定解在mid1和mid2哪一侧?--请记得我们的前提--我们所计算的函数均为单调函数
P1102 A-B 数对 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)https://www.luogu.com.cn/problem/P1102P3382 【模板】三分法 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)
https://www.luogu.com.cn/problem/P3382