二分算法
个人感想
洛谷二分题单基本完成,发现二分确实是比较模板的方式解答题目,难点往往是寻找出答案的单调性和如何高效验证答案的正确性。
二分个人感觉就是枚举的优化,在时间复杂度上的极大优化,有一种暴力的美.
目前发现的不足
- 对题目的理解太浅,有时很难看懂题目的意思,理解有问题。
- 对于涉及浮点数的判断还有非常大的进步空间(委婉的说)
二分本质
二分算法本质是二分查找,对于答案存在单调性时便可以用二分来实现快速查找,时间复杂度为
\[o(\log n) \]- 我们往往可以通过分析题目,发现答案具有单调性即:
1,2,3···r r· · · · · ·L(边界)
(可以取) (不可取)
那么我们就可以写下二分板子:
这便是对答案的寻找,接下来就是通过题目来写下check函数来验证答案的正确性并记录答案即可.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; } }