uva 1476

对x的坐标三分;

 1 #include<cstdio>
 2 #include<algorithm>
 3 #define maxn 10009
 4 using namespace std;
 5 double a[maxn],b[maxn],c[maxn];
 6 int n;
 7 double f(double x)
 8 {
 9     double ans=-999999999.0,t;
10     for(int i=0;i<n;i++)
11     {
12         t=a[i]*x*x+b[i]*x+c[i];
13         ans=max(ans,t);
14     }
15     return ans;
16 }
17 
18 int main()
19 {
20     int t;
21     scanf("%d",&t);
22     while(t--)
23     {
24         scanf("%d",&n);
25         for(int i=0;i<n;i++)
26         {
27             scanf("%lf%lf%lf",&a[i],&b[i],&c[i]);
28         }
29         double l=0,r=1000;
30         for(int i=0;i<500;i++)
31         {
32             double m1=l+(r-l)/3;
33             double m2=r-(r-l)/3;
34             if(f(m1)<f(m2))r=m2;
35             else l=m1;
36         }
37         printf("%.4lf
",f(l));
38     }
39     return 0;
40 }
View Code
原文地址:https://www.cnblogs.com/yours1103/p/3411286.html