傳送門
水題使我快落
#include <cstdio>
#include <iostream>
#include <algorithm>
#include <queue>
#include <map>
#include <cstring>
#include <cmath>
using namespace std;
const int N=10050;
int T;
int n;
double a[N],b[N],c[N];
inline int read(){//好看的快讀
int x=0,f=1;
char ch=getchar();
while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}
while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();}
return x*f;
}
double cal(double x){
double maxx=-2147483647;
for(int i=1;i<=n;i++)maxx=max(maxx,a[i]*x*x+b[i]*x+c[i]);
return maxx;
}
int main(){
T=read();
while(T--){
double minn=2147483647;
n=read();
for(int i=1;i<=n;i++) scanf("%lf%lf%lf",&a[i],&b[i],&c[i]);
double l=0.0000;
double r=1000.0000;
while(l+1e-11<r){//這裏是在判斷double類型大小時候常用的一種方法,加上一個極小值,可以減小誤差,注意這個值的大小,要足夠小,我一開始取1e-6全Wa了嚶嚶嚶
double mid=(l*2+r)/3;
double midr=(l+r*2)/3;
double f2=cal(mid);
double f3=cal(midr);
if(f2>f3)l=mid;
else r=midr;
}
printf("%.4lf\n",cal(l));
}
return 0;
}