首页 > 代码库 > UVALive 5009 Error Curves 三分
UVALive 5009 Error Curves 三分
//#pragma comment(linker, "/STACK:1024000000,1024000000") #include<cstdio> #include<cstring> #include<cstdlib> #include<algorithm> #include<iostream> #include<sstream> #include<cmath> #include<climits> #include<string> #include<map> #include<queue> #include<vector> #include<stack> #include<set> using namespace std; typedef long long ll; typedef unsigned long long ull; typedef pair<int,int> pii; #define pb(a) push(a) #define INF 0x1f1f1f1f #define lson idx<<1,l,mid #define rson idx<<1|1,mid+1,r #define PI 3.1415926535898 template<class T> T min(const T& a,const T& b,const T& c) { return min(min(a,b),min(a,c)); } template<class T> T max(const T& a,const T& b,const T& c) { return max(max(a,b),max(a,c)); } void debug() { #ifdef ONLINE_JUDGE #else freopen("in.txt","r",stdin); //freopen("d:\\out1.txt","w",stdout); #endif } int getch() { int ch; while((ch=getchar())!=EOF) { if(ch!=‘ ‘&&ch!=‘\n‘)return ch; } return EOF; } const int maxn=10005; int a[maxn],b[maxn],c[maxn]; double f(int i,double x) { return a[i]*x*x+b[i]*x+c[i]; } int n; double check(double x) { double maxx=f(1,x); for(int i=2;i<=n;i++) maxx=max(maxx,f(i,x)); return maxx; } int main() { int t; scanf("%d",&t); for(int ca=1;ca<=t;ca++) { //int n; scanf("%d",&n); double maxx=-(1<<29); for(int i=1;i<=n;i++) { scanf("%d%d%d",&a[i],&b[i],&c[i]); } double l=0,r=1005; const double eps=1e-9; while(r-l>eps) { double ll=(2*l+r)/3; double rr=(l+2*r)/3; if(check(ll)<check(rr)) r=rr; else l=ll; } printf("%.4lf\n",check(l)); } return 0; }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。