题意
分析
因为这些函数都可以看成下凸的,所以总函数也是下凸的(可用反证法证明)。
三分答案即可,时间复杂度\(O(100)\)
代码
#include<bits/stdc++.h>
#define rg register
#define il inline
#define co const
template<class T>il T read(){
rg T data=0,w=1;rg char ch=getchar();
while(!isdigit(ch)) {if(ch=='-') w=-1;ch=getchar();}
while(isdigit(ch)) data=data*10+ch-'0',ch=getchar();
return data*w;
}
template<class T>il T read(rg T&x) {return x=read<T>();}
typedef long long ll;
co int N=1e4;
int n,a[N],b[N],c[N];
double F(double x){
double ans=a[0]*x*x+b[0]*x+c[0];
for(int i=1;i<n;++i) ans=std::max(ans,a[i]*x*x+b[i]*x+c[i]);
return ans;
}
int main(){
// freopen(".in","r",stdin),freopen(".out","w",stdout);
for(int T=read<int>();T--;){
read(n);
for(int i=0;i<n;++i) read(a[i]),read(b[i]),read(c[i]);
double L=0,R=1000;
for(int i=0;i<100;++i){
double m1=L+(R-L)/3,m2=R-(R-L)/3;
F(m1)<F(m2)?R=m2:L=m1;
}
printf("%.4lf\n",F(L));
}
return 0;
}