标签:http html 简介 离散 退出 win 链接 ref 三次
1、确定一个区间,使目标值一定在区间内
2、找到一个性质满足:
(1)具有二段性(即可分成连续的,性质不同的两段,同一段内性质相同);
(2)答案是二段性的分界点;
整数二分因为数在数轴上是离散分布(即不是连续的),且int型变量默认向下取整,所以实现的时候很容易出现死循环的情况。这里给出两类整数二分的实现方法及其相关原理,可以有效避免死循环的情况;
ans(答案)是红色区间的右端点。将【L,R】分成【L,M-1】、【M,R】两个区间。
if M在红色区间内,说明ans必然在【M,R】区间;
else ans必然在【L,M-1】区间;
PS:如上图证明:求M时若不“+1”,当L=R-1且第一个条件满足时,L永远不变,循环无法退出。
ans是绿色区间的左端点。将【L,R】分成【L,M】、【M+1,R】两个区间。
if M在绿色区间内,说明ans必然在【L,M】中;
else ans必然在【M+1,R】中;
PS:这里求M时无需“+1”,如图证明可知若“+1”当条件一成立时,程序会陷入死循环。
由于实数在数轴上连续、稠密分布,二分时必然可以求到一个精确的M,不存在整数二分的边界问题。
所以实数二分相对比较简单,只要r-l小于一个足够小的数前,不断二分循环毕竟答案即可。唯一需要注意的地方就是一般为了精确度考虑,二分边界条件精度到问题所求后两位。(如:问题要求保留小数点后6位,设置条件时r-l则大于小数点后8位)
(前为本人题解链接,后位原题链接)
AcWing790. 数的三次方根 原题链接 (实数二分模板题)
AcWing 789. 数的范围 原题链接 (整数二分模板题、两类写法均用到)
标签:http html 简介 离散 退出 win 链接 ref 三次
原文地址:https://www.cnblogs.com/yifeianyi/p/12185486.html