本文主要是介绍Uva - 1476 - Error Curves(三分),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题意:求函数F(x) = max(S(x)) 的最小值。S(x) = a*x^2 + b*x + c(0 ≤ a ≤ 100),输入多个S(x)。
题目链接:http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&category=493&problem=4222
——>>做的第一道三分题,先找出F(x),然后三分,迭代100次。
#include <cstdio>
#include <algorithm>using namespace std;const int maxn = 10000 + 10;
int a[maxn], b[maxn], c[maxn], n;double F(double x)
{double ret = a[0]*x*x + b[0]*x + c[0];for(int i = 1; i < n; i++)ret = max(ret, a[i]*x*x + b[i]*x + c[i]);return ret;
}
int main()
{int T, i;scanf("%d", &T);while(T--){scanf("%d", &n);for(i = 0; i < n; i++) scanf("%d%d%d", &a[i], &b[i], &c[i]);double L = 0.0, R = 1000.0, m1, m2;for(i = 0; i < 100; i++){m1 = L + (R-L)/3;m2 = R - (R-L)/3;if(F(m1) < F(m2)) R = m2;else L = m1;}printf("%.4lf\n", F(L));}return 0;
}
这篇关于Uva - 1476 - Error Curves(三分)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!