首先看看:
下面是浮点数二分的正常模板:
bool check()
{
// 时间复制度为 O(n);
}
double l=0, r = 1e9;
while (r-l > 1e(-k-2)) //k为题目所需要保留的k位小数,往后加2,避免意外
{
double mid = (r+l)>>1;
if (check(mid)) l = mid;
else r = mid;
}
提高精度的模板:
一般提高精度的话,就是算二分循环枚举的次数是多大!
公式 = check函数的最坏时间复杂度设为 O
循环次数 = 1e7%O (次);
bool check()
{
// 时间复制度为 O(n);
}
double l=0, r = 1e9;
for (int i=0; i < 1e7/O(n); i ++) //k为题目所需要保留的k位小数,往后加2,避免意外
{
double mid = (r+l)>>1;
if (check(mid)) l = mid;
else r = mid;
}