三分/函数

链接

题目看上去挺吓人的,尤其是这个F(x),乍一看F(x)是一个相当复杂的函数, 但实际上我们拿笔画一下会发现这个函数是一个先减后增的函数,类似于一个大的凹二次函数

那么这题就好些多了

#include<bits/stdc++.h>
using namespace std;
double f(double a[], double x) {
	double res = 0;
	for (int i = 0;i <3;i++) {
		res = res * x + a[i];
	}
	return res;
}
struct coefficient {
	double a[3];
};
double max_x(double x, vector<coefficient>& coe) {
	double m = f(coe[0].a, x);
	for (int i = 0;i < coe.size();i++) {
		m = max(f(coe[i].a, x), m);
	}
	return m;
}

int main() {
	int T;
	cin >> T;
	cout << fixed << setprecision(4);
	while (T--) {
		int n;
		cin >> n;
		vector<coefficient> coe(n);
		for (int i = 0;i < n;i++) {
			cin >> coe[i].a[0] >> coe[i].a[1] >> coe[i].a[2];
		}
		double l = 0, r = 1000,ans=0;
		int count = 100;
		while (count--) {
			double mid_l = (2 * l + r) / 3;
			double mid_r = (l + 2 * r) / 3;
			double left = max_x(mid_l, coe), right = max_x(mid_r, coe);
			if (left>right) {
				l = mid_l;
				
			}
			else {
				r = mid_r;
				
			}
			ans = max_x((l + r) / 2, coe);
		}
		cout << ans << endl;
	}
}
全部评论

相关推荐

king327:最好要在简历中很好地包装和证明你的能力 要证明你的技术深度才能在面试官那里有竞争力 如果你有需要的话可以看一下我主页简历我帮你详细地说一下各个地方的具体问题
投了多少份简历才上岸
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务