UVA 1476 - Error Curves(三分法)

UVA 1476 1476 - Error Curves

题目链接

题意:给几条下凹二次函数曲线,然后问[0,1000]所有位置中,每个位置的值为曲线中最大值的值,问所有位置的最小值是多少

思路:三分法,由于都是下凹函数,所以所有曲线合并起来,仍然是一个下凹函数,满足单峰,用三分求极值

代码:

#include <cstdio>
#include <cstring>
#include <cmath>
#include <algorithm>
using namespace std;

const int N = 10005;
int t, n, ans;
struct Line {
    double a, b, c;
} l[N];

double cal(double x) {
    double ans = l[0].a * x * x + l[0].b * x + l[0].c;
    for (int i = 1; i < n; i++)
	ans = max(ans, l[i].a * x * x + l[i].b * x + l[i].c);
    return ans;
}

double solve() {
    double l = 0, r = 1000;
    while (fabs(l - r) > 1e-9) {
	double ml = (2 * l + r) / 3;
	double mr = (l + 2 * r) / 3;
	if (cal(ml) < cal(mr)) r = mr;
	else l = ml;
    }
    return cal(l);
}

int main() {
    scanf("%d", &t);
    while (t--) {
	scanf("%d", &n);
	for (int i = 0; i < n; i++)
	    scanf("%lf%lf%lf", &l[i].a, &l[i].b, &l[i].c);
	printf("%.4lf\n", solve());
    }
    return 0;
}

UVA 1476 - Error Curves(三分法)

时间: 2024-12-20 18:46:12

UVA 1476 - Error Curves(三分法)的相关文章

UVA - 1476 Error Curves (三分搜索)

Description Josephina is a clever girl and addicted to Machine Learning recently. She pays much attention to a method called Linear Discriminant Analysis, which has many interesting properties. In order to test the algorithm's efficiency, she collect

UVA - 1476 Error Curves 三分

                                       Error Curves Josephina is a clever girl and addicted to Machine Learning recently. She pays much attention to a method called Linear Discriminant Analysis, which has many interesting properties.In order to test

UVa 1476 - Error Curves

题目:给你n条开口向上的二次曲线Si(a>0),定义F(x) = max(Si(x)),求F(x)的最小值. 分析:三分.F(x)是一个单峰函数,先单调递减后单调递增,利用三分求最小值. 首先,证明两个二次函数构造的F2(x)为单峰函数: (如果不成立,则存在两个连续的波谷,交点处一个函数递增另一个递减,矛盾,不会取递减函数) 然后,用数学归纳法证明,Fi(x)为单峰函数,则Fi+1 = max(Fi(x),Si+1(x))也是单峰函数: (如果存在两个(或更多)连续的波谷,交点处一个函数递增另

uva 1476 Error Curves 题解

题意:给n个二次函数f(x),定义F(x)=max(f(x)),即n个二次函数中的最大值.求F(x)在区间[1,1000]内的最小值. 根据题意可以知道,F(x)是单峰函数.于是我们可以三分解决.对于区间[L,R],找它的三等分点M1,M2,如果F(M1)<F(M2),则答案在[L,M2],否则在[M1,R]. 精度最好高一点..只差一两个数量级是不行的,因为有函数会放大误差.. 1 #include<cstdio> 2 #include<algorithm> 3 const

UVA 5009 Error Curves

Problem Description Josephina is a clever girl and addicted to Machine Learning recently. She pays much attention to a method called Linear Discriminant Analysis, which has many interesting properties. In order to test the algorithm's efficiency, she

LA 5009 (HDU 3714) Error Curves (三分)

A - Error Curves Time Limit:3000MS    Memory Limit:0KB    64bit IO Format:%lld & %llu SubmitStatusPracticeUVALive 5009 Appoint description: Description Josephina is a clever girl and addicted to Machine Learning recently. She pays much attention to a

hdu3714 Error Curves

题目: Error Curves Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total Submission(s): 1151    Accepted Submission(s): 440 Problem Description Josephina is a clever girl and addicted to Machine Learning recently. She

三分 HDOJ 3714 Error Curves

题目传送门 1 /* 2 三分:凹(凸)函数求极值 3 */ 4 #include <cstdio> 5 #include <algorithm> 6 #include <cstring> 7 #include <cmath> 8 using namespace std; 9 10 const int MAXN = 1e4 + 10; 11 const int INF = 0x3f3f3f3f; 12 const double EPS = 0.0000000

Error Curves(2010成都现场赛题)

F - Error Curves Time Limit:3000MS     Memory Limit:0KB     64bit IO Format:%lld & %llu Description Josephina is a clever girl and addicted to Machine Learning recently. She pays much attention to a method called Linear Discriminant Analysis, which h