二分总结

步骤

  1. 确定一个区间,使得目标一定在区间中。

  2. 找到一个性质,满足:

    (1)性质具有二段性

    (2)答案是二段性的分界点

两类二分方法

第一类:ans(答案)是左侧区间的右端点

将[L,R]分为 [ L , M - 1 ] 和 [ M , R ] ,

如果mid落在左侧,说明ans仍在右侧区间 [ M , R ]

else 说明ans仍然在左侧区间 [ L , M - 1 ]

	while(l<r)
    {
        int m=(l+r+1)/2;
        if(m在左侧区间)
            l=m;
        else r=m-1;
    }  //结束时的情况是l=r
第二类:ans(答案)是右侧区间的左端点

将 [ L , R ] 分为 [ L , M ] 和 [ M + 1 , R ]

如果mid落在右侧,说明ans仍在左侧区间 [ L , M ]

else 说明ans仍然在右侧区间 [ M + 1 , R ]

	while(l<r)
    {
        int m=(l+r)/2;
        if(m在左侧区间)
            l=m+1;
        else r=m;
    }  //结束时的情况是l=r

原文链接: https://www.cnblogs.com/longwind7/p/15802006.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

    二分总结

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/185441

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月12日 上午10:55
下一篇 2023年2月12日 上午10:55

相关推荐