三分

//三分
//劣于二分 但可以解决某些二分无法解决的问题
//求函数顶点可用 
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<cmath>
#include<algorithm>
#define eps 1e-7
using namespace std;
int n;
double l,r,a[14]; 
double get(double x)
{
    double num=0;
    for(int i=n;i>=0;i--)
        num=num*x+a[i];
    return num;
}
int main()
{
    scanf("%d%lf%lf",&n,&l,&r);
    for(int i=n;i>=0;i--)
        scanf("%lf",&a[i]);
    while(fabs(l-r)>=eps)
    {
        double mid=(l+r)/2;
        if(get(mid+eps)>get(mid-eps))
            l=mid;
        else r=mid;
    }
    printf("%.5lf",l);
    return 0;
}
原文地址:https://www.cnblogs.com/water-radish/p/9280638.html