二分对应单调数据,三分对应找极值有一次改变单调性
从左逼近到右边的误差范围内
无需完整三分只需取二分点两边一点点比较就可以(代替求导)
#include<iostream>
#include<math.h>
using namespace std;
const double ns=1e-6;
double l,r,ans,mid;
int n;
double a[20];
double f(double x)
{
ans=0;
for(int i=0;i<=n;++i)
{
ans=ans*x+a[i];
}
return ans;
}
int main ()
{
cin>>n;
cin>>l>>r;
for(int i=0;i<=n;++i)
{
cin>>a[i];
}
while(fabs(r-l)>=ns)
{
mid=(l+r)/2.0;
if(f(mid+ns)>f(mid-ns))
{
l=mid;
}
else r=mid;
}
cout<<l;
return 0;
}