2025-01-20浮点二分

浮点二分

浮点二分比整数二分简单得多,因为无需判断边界条件,只要设置精度即可。

  • 设置精度标准:一般题目要求保留x位的话,精度加上2没有大问题。

模板

1
2
3
4
5
6
7
8
9
10
11
const double eps = 1e-9;

double binary_search(double left, double right) {
int l=left, r=right;
while (r-l > eps) {
double mid = (l+r)/2;
if(check(mid)) r = mid;
else l = mid;
}
return l;
}

#例题
求立方根

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include<bits/stdc++.h>
using namespace std;

long long x;
const double P=1e-2;

void work(){
cin>>x;
double l=0,r=1e5+5;
while(r-l>P){
double mid=(r+l)/2;
if(mid*mid*mid<=x) l=mid;
else r=mid;
}

int ans=r;
cout<<"l: "<<l<<endl;
cout<<"r: "<<r<<endl;
cout<<ans<<endl;
}

int main(){
work();
return 0;
}

2025-01-20浮点二分
http://666xz666.github.io/2025/01/20/2025-1-20浮点二分/
作者
666xz666
发布于
2025年1月20日
许可协议