UVA 1476 A

来源:互联网 发布:洛阳网络设计 编辑:程序博客网 时间:2024/06/11 06:37

1.函数f只有一个凹点, 可以三分

2.三分精度比较高,50次过不了,100次就过了

#include <cstdio>#include <cstring>#include <iostream>#include <algorithm>#include <cmath>using namespace std;const int maxn = 1e4 + 10;int n, a[maxn], b[maxn], c[maxn];double cal(int a, int b, int c, double x) {    return x * x * a + x * b + c;}double f(double x) {    double maxv = cal(a[1], b[1], c[1], x);    for (int i = 2; i <= n; i++) {        maxv = max(maxv, cal(a[i], b[i], c[i], x));    }    return maxv;}double sanfen(double l, double r) {    for (int i = 0; i < 100; i++) {        double mid = (l + r) / 2;        double mmid = (mid + r) / 2;        if (f(mid) < f(mmid)) r = mmid;        else l = mid;    }    return min(f(l), f(r));}int main() {    int T; scanf("%d", &T);    for (int kase = 1; kase <= T; kase++) {        scanf("%d", &n);        for (int i = 1; i <= n; i++) {            scanf("%d %d %d", &a[i], &b[i], &c[i]);        }        printf("%.4lf\n", sanfen(0, 1000));    }    return 0;}


原创粉丝点击