赞
踩
二分法应用场景
特点速度快,效率很高,二分法的复杂度O(logn)
n次二分后,区间缩小到(b-a)/2^n,给定a,b和精度要求e,可以计算出二分次数n
(b-a)/2^n<e。
如函数在区间[1,100000]内单调,要求根的精度10^-8,那么由100000/2^n<10^-8可知二分次数
n>log2(10^13),44次。
整数二分
左闭右开循不变,
左中位数找后继,
右中位数找前驱,
欲寻后继收右边,
移左莫忘再加一。
例:在单调递增序列种查找x或x的后继,在单调递增序列种查找x或x的前驱
跳石头
看完贪心后回来补
青蛙过河
看完贪心回来补
实数二分
两种写法:while,for
1e-7表示10^-7,也可以用for循环来写,直接100次二分,一定会分到一个极小区间,但这个100不能滥用,达到精度即可,否则会超时。
练习:
一元三次方程求解
直接在区间上做二分无法找到3个解,题目给了个很好的条件,根与根之差绝对值大于等于1,
在每个[i,i+1]内做二分查找,共有200个长度为1的区间
题目要求精确到小数点后2位,(这里做10次二分,即1/1024的精度,足以达到题目要求确保不会出错)。
y(mid)*y(right)>=0表示mid和right都在target的右侧,right=mid,y(mid)*y(right)>=0则相反
解立方根
分巧克力
暴力法
二分法
用二分法来做,相当于是整数二分里求x或x的前驱,
需要注意的是,初始right必须是理论最长的边 ,不一定要比所有巧克力的宽高要小
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。