三分模板

/***********
P3382 【模板】三分法
***********/
#include <bits/stdc++.h>
using namespace std;

const int N = 20;
double a[N];
int n;
double f(double x) //此处可以用秦九韶算法简化为O(n)的!
{
    double ans = 0;
    for(int i=1; i<=n+1; i++)
    {
        ans += 1.0 * pow(x,n - i + 1) * a[i];
    }
    return ans;
}

int main()
{
    double l,r;
    cin >> n >> l >> r;
    for(int i=1; i<=n+1; i++) cin >> a[i];
    double ans = 0;
    while(r - l > 1e-7)
    {
        double lmid = l + (r - l) / 3,rmid = r - (r - l) / 3;
        if(f(lmid) >= f(rmid)) r = rmid,ans = rmid;
        else l = lmid;
    }
    printf("%.6f\n",ans);
    return 0;
}

全部评论

相关推荐

牛客48826091...:哥们胸肌挺好看
点赞 评论 收藏
分享
迷茫的大四🐶:都收获五个了,兄弟那还说啥,不用改了,去玩吧
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务