欢迎来到SFWR的博客

P3382 【模板】三分法

给出一个N次函数,保证在范围[l,r]内存在一点x,使得[l,x]上单调增,[x,r]上单调减。试求出x的值。


学习一下三分法


#include<bits/stdc++.h>
using namespace std;
const double dbs=0.000001;
double l,r,num[50];
int n;
double f(double x){
    double ans=0;
    for(int i=n+1;i>=1;i--)ans=ans*x+num[n+2-i];
    return ans;
}
int main()
{
    cin>>n>>l>>r;
    for(int i=1;i<=n+1;i++)cin>>num[i];
    while(l<=r-dbs)
    {
        double ll=l+(r-l)/3,rr=r-(r-l)/3;
        if(f(ll)<f(rr))l=ll;
        else r=rr;
    }
    printf("%.5lf",l);
}

 

 

posted @ 2019-11-13 07:05  SFWR  Views(132)  Comments(0Edit  收藏  举报