0
点赞
收藏
分享

微信扫一扫

UVA 1476 A - Error Curves——三分


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;
}



举报

相关推荐

0 条评论