洛谷 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 }

 

posted @ 2018-12-16 00:33  宇興  阅读(132)  评论(0编辑  收藏  举报