90分求助
  • 板块P1883 函数
  • 楼主yanghb666
  • 当前回复11
  • 已保存回复11
  • 发布时间2025/7/22 19:01
  • 上次更新2025/7/23 11:34:47
查看原帖
90分求助
1218883
yanghb666楼主2025/7/22 19:01
#include <bits/stdc++.h>
using namespace std;
const double eps = 1e-8;
const int N = 10010;
int T, n, a[N], b[N], c[N];
double calc(double x) {
    double res = -1e18;
    for (int i = 1; i <= n; i++) {
        double val = a[i] * x * x + b[i] * x + c[i];
        res = max(res, val);
    }
    return res;
}
double search(double l, double r) {
    while (r - l > eps) {
        double mid1 = l + (r - l) / 3;
        double mid2 = r - (r - l) / 3;
        if (calc(mid1) < calc(mid2))
            r = mid2;
        else
            l = mid1;
    }
    return calc(l);
}
int main() {
    scanf("%d", &T);
    while (T--) {
        scanf("%d", &n);
        for (int i = 1; i <= n; i++)
            scanf("%d%d%d", &a[i], &b[i], &c[i]);
        printf("%.4lf\n", search(0, 1000));
    }
    return 0;
}
2025/7/22 19:01
加载中...