求助 subtask 2
  • 板块P1883 函数
  • 楼主RE_Prince
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/7/12 15:52
  • 上次更新2024/7/12 16:38:59
查看原帖
求助 subtask 2
509528
RE_Prince楼主2024/7/12 15:52

rt.

精度是 1e-10 会 wa,1e-11 会 T。

代码:

#include<bits/stdc++.h>
using namespace std;
int t,i,n;
double a[10009],b[10009],c[10009];
double calc(int i,double x)
{
	return a[i]*x*x+b[i]*x+c[i];
}
double check(double x)
{
	double ret=-1e9;
	for(i=1;i<=n;i++) ret=max(ret,calc(i,x));
	return ret;
}
const double eps=1e-11;
int main()
{
	cout<<fixed<<setprecision(4);
	cin>>t;
	while(t--)
	{
		cin>>n;
		for(i=1;i<=n;i++) cin>>a[i]>>b[i]>>c[i];
		double l=0,r=1e9,ans=0;
		while(r-l>eps)
		{
	//		cout<<l<<" "<<r<<endl;
			double mid1=l+(r-l)/3.000,mid2=r-(r-l)/3.000;
			if(check(mid1)<=check(mid2)) r=mid2-eps,ans=check(mid1);
			else l=mid1+eps;
		}
		cout<<ans<<endl;
	}
	return 0;
}
2024/7/12 15:52
加载中...