模板题。好想有个什么叫黄金分割比例优化三分,洛谷的题解里有一位大佬提到过orz。
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
const int N=15;
const double eps=1e-10;
double a[N],L,R;
int n;
inline double fpow(double a,int b) {
double ret=1.0;
while (b) {
if (b&1) ret=ret*a;
a*=a,b>>=1;
}
return ret;
}
inline double cal(double x) {
double ret=0.0;
for (int i=n;~i;--i)
ret+=a[i]*fpow(x,i);
return ret;
}
int main() {
// freopen("P3382.in","r",stdin);
scanf("%d%lf%lf",&n,&L,&R);
for (int i=n;~i;--i) scanf("%lf",&a[i]);
while (R-L>eps) {
double lm=L+(R-L)/3,rm=R-(R-L)/3;
if (cal(lm)<cal(rm)) L=lm;
else R=rm;
}
printf("%.5lf\n",L);
return 0;
}