二分算法

二分算法

个人感想

洛谷二分题单基本完成,发现二分确实是比较模板的方式解答题目,难点往往是寻找出答案的单调性和如何高效验证答案的正确性。
二分个人感觉就是枚举的优化,在时间复杂度上的极大优化,有一种暴力的美.

目前发现的不足
  • 对题目的理解太浅,有时很难看懂题目的意思,理解有问题。
  • 对于涉及浮点数的判断还有非常大的进步空间(委婉的说)

二分本质

二分算法本质是二分查找,对于答案存在单调性时便可以用二分来实现快速查找,时间复杂度为

\[o(\log n) \]

  • 我们往往可以通过分析题目,发现答案具有单调性即:
    1,2,3···r r· · · · · ·L(边界)
    (可以取) (不可取)
    那么我们就可以写下二分板子:
    int l=1;r=L;
    while(l<=r){//如果是小数可以用r-l>=1e-4表示
    int mid=(l+r)/2;
    	if(check){
    		r=mid-1;
    	}else{
    		l=mid+1;
    	}
    }
    
    这便是对答案的寻找,接下来就是通过题目来写下check函数来验证答案的正确性并记录答案即可.
posted @ 2024-01-29 18:20  拍手称快  阅读(7)  评论(0编辑  收藏  举报