萌新,刚学
  • 板块P1883 函数
  • 楼主7KByte
  • 当前回复7
  • 已保存回复7
  • 发布时间2020/7/30 18:28
  • 上次更新2023/11/6 21:45:02
查看原帖
萌新,刚学
119261
7KByte楼主2020/7/30 18:28

求助,求导二分挂了。能过样例

#include<bits/stdc++.h>
#define rep(i,a,b) for(int i=a;i<=b;i++)
#define pre(i,a,b) for(int i=a;i>=b;i--)
#define N 10005
using namespace std;
const double eps = 0.0000000001;
int n;double a[N],b[N],c[N];
double f(double x,int op){
	return a[op]*x*x+b[op]*x+c[op];
}
bool check(double x){
	double l,r;l=r=-99864435310000000.10007;
	rep(i,1,n)l=max(l,f(x,i));
	rep(i,1,n)r=max(r,f(x+eps,i));
	//cout<<x<<" "<<l<<" "<<r<<endl;
	if(l>r)return true;
	return false;
}
int main(){
	int T;scanf("%d",&T);
	while(T--){
		scanf("%d",&n);
		rep(i,1,n)scanf("%lf%lf%lf",&a[i],&b[i],&c[i]);
		double l=0.00,r=1000.00;
		while(l+eps<=r){
			double mid=(l+r)/2.00;
			if(check(mid))l=mid;
			else r=mid;
		}
		//cout<<l<<" "<<r<<endl;
		printf("%.4lf\n",l);
	}
	return 0;
}
2020/7/30 18:28
加载中...