0分求调,哪有问题
  • 板块P1883 函数
  • 楼主gnak
  • 当前回复1
  • 已保存回复1
  • 发布时间2025/8/3 20:31
  • 上次更新2025/8/4 10:06:00
查看原帖
0分求调,哪有问题
1347350
gnak楼主2025/8/3 20:31
#include<iostream>
#include<vector>
#include<iomanip>
#include<limits>

double func(double x, int a, int b, int c) {
	double res = 0;
	res = (res + a) * x;
	res = (res + b) * x;
	res += c;
	return res;
}

double Func(double x, const std::vector<std::vector<int>>& coes) {
	double res = std::numeric_limits<double>::min();
	for (int i = 0; i < coes.size(); ++i)
		res = res < func(x, coes[i][0], coes[i][1], coes[i][2]) ? func(x, coes[i][0], coes[i][1], coes[i][2]) : res;
	return res;
}



int main() {
	int T, n;
	std::cin >> T;
	std::vector<std::vector<int>> coes;
	for (int i = 0; i < T; ++i) {
		coes.clear();
		std::cin >> n;
		coes.assign(n, std::vector<int>(3));
		for (int j = 0; j < n; ++j) 
			std::cin >> coes[j][0] >> coes[j][1] >> coes[j][2];
		double left = 0, right = 1000;
		while (right - left > 1e-9) {
			double midl = left + (right - left) / 3, midr = right - (right - left) / 3;
			if (Func(midl, coes) > Func(midr, coes))
				left = midl;
			else
				right = midr;
		}
		std::cout << std::fixed << std::setprecision(4) << (left + right) / 2;
		if(i < T-1)
			std::cout << '\n';
	}

	return 0;
}
2025/8/3 20:31
加载中...