洛谷 P3382 【模板】三分法

三分法求函数极值

#include<iostream>
#include<cstdio>
#include<cmath>
#define MAXN 15
using namespace std;
int n;
double l,r,a[MAXN];
double eps=1e-7;
double f(double x){
    double res=0;
    for(int i=n;i>=0;i--)
        res=res*x+a[i];
    return res;
}
int main(){
#ifdef WINE
    freopen("data.in","r",stdin);
#endif
    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-l)/2;
        if(f(mid+eps)>f(mid-eps))l=mid;
        else r=mid;
    }
    printf("%.5lf\n",l);
    return 0;
}

在这里插入图片描述

posted @ 2020-04-15 22:22  winechord  阅读(89)  评论(0编辑  收藏  举报