洛谷 P3382 【模板】三分法
1 #include<bits/stdc++.h> 2 using namespace std; 3 const double eps=0.0000001;//精度 4 struct f{ 5 double s[20]; 6 int n; 7 inline double calc(double x) 8 { 9 double sum=0; 10 for(int i=n;i>=0;i--) sum=sum*x+s[i];//秦九韶算法 11 return sum; 12 } 13 }fx; 14 double l,r; 15 int main() 16 { 17 scanf("%d%lf%lf",&fx.n,&l,&r); 18 for(int i=fx.n;i>=0;i--) scanf("%lf",&fx.s[i]); 19 while(l+eps<r) 20 { 21 double ml=l+(r-l)/3.0,mr=r-(r-l)/3.0;//三分 22 if(fx.calc(ml)<fx.calc(mr)) l=ml; 23 else r=mr; 24 } 25 printf("%.5lf",l); 26 return 0; 27 }