根据题意可得F(x)为单谷函数,所以使用三分法求解。

#include<bits/stdc++.h>
using namespace std;
double t,n,a[10010]={0},b[10010]={0},c[10010]={0},ans;
const double ee=1e-9;//保持精度使用
double fm(double x);
int main()
{
    cin>>t;
    for(int i=0;i<t;i++)
    {
        double l=0,r=1000;
        cin>>n;
        for(int j=0;j<n;j++)
        {
            cin>>a[j]>>b[j]>>c[j];
        }
        while(r-l>ee)
        {
            double k=(r-l)/3.0;
            double mid1=l+k;
            double mid2=r-k;
            if(fm(mid2)>fm(mid1))
            {
                r=mid2;
            }
            else
            {
                l=mid1;
            }
        }
        printf("%.4f\n",fm(l));
    }
}
double fm(double x)//求解F(x)的函数
{
    double ans=-1e9;
    for(int i=0;i<n;i++)
    {
        ans=max(ans,a[i]*x*x+b[i]*x+c[i]);
    }
    return ans;
}