HDU 3714 Error Curves

Error Curves

思路:这个题的思路和上一个题的思路一样,但是这个题目卡精度,要在计算时,卡到1e-9。

#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#define MAXN 10100
#define eps 1e-9
using namespace std;
int T,n;
double ans;
double l,r,mid1,mid2;
double a[MAXN],b[MAXN],c[MAXN];
double f(double x){
    ans=-0x7f7f7f7f;
    for(int i=1;i<=n;i++)    ans=max(ans,x*x*a[i]+x*b[i]+c[i]);
    return ans;
}
int main(){
    scanf("%d",&T);
    while(T--){
        scanf("%d",&n);
        for(int i=1;i<=n;i++)
            scanf("%lf%lf%lf",&a[i],&b[i],&c[i]);
        l=0;r=1000;
        while(r-l>eps){
            mid1=(l+r)/2;
            mid2=(mid1+r)/2;
            if(f(mid1)>f(mid2))    l=mid1;
            else r=mid2;
        }    
        printf("%.4lf\n",f(l));
    }
}
posted @ 2017-10-26 22:01  一蓑烟雨任生平  阅读(130)  评论(0编辑  收藏  举报