算法笔记(一)

尺取法(二分法)有两种扫描方向:

(1)反向扫描:

        i和j方向相反,i从头到尾,j从尾到头,在中间相会

(2)同向扫描:

        i和j方向相同,都从头到尾,但是速度不同

        实际上在这里也可以使用多指针--比如--"洛谷P1102 A-B数对";

三分法分为两种:


前提:所解决的函数是单调递增的函数


<1>三等分法: mid1,mid2各取左侧和右侧的三等分点

例题:洛谷P3382实数三分法

有以下几种情况:

(1)mid1

        此时又含有两种情况--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)icon-default.png?t=N7T8https://www.luogu.com.cn/problem/P1102P3382 【模板】三分法 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)icon-default.png?t=N7T8https://www.luogu.com.cn/problem/P3382

你可能感兴趣的:(算法笔记,笔记)