题干:

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 collects many datasets. 
What's more, each data is divided into two parts: training data and test 
data. She gets the parameters of the model on training data and test the 
model on test data. To her surprise, she finds each dataset's test error curve is just a parabolic curve. A parabolic curve corresponds to a quadratic function. In mathematics, a quadratic function is a polynomial function of the form f(x) = ax2 + bx + c. The quadratic will degrade to linear function if a = 0.

It's very easy to calculate the minimal error if there is only one test error curve. However, there are several datasets, which means Josephina will obtain many parabolic curves. Josephina wants to get the tuned parameters that make the best performance on all datasets. So she should take all error curves into account, i.e., she has to deal with many quadric functions and make a new error definition to represent the total error. Now, she focuses on the following new function's minimum which related to multiple quadric functions. The new function F(x) is defined as follows: F(x) = max(Si(x)), i = 1...n. The domain of x is [0, 1000]. Si(x) is a quadric function. Josephina wonders the minimum of F(x). Unfortunately, it's too hard for her to solve this problem. As a super programmer, can you help her?

Input

The input contains multiple test cases. The first line is the number of cases T (T < 100). Each case begins with a number n (n ≤ 10000). Following n lines, each line contains three integers a (0 ≤ a ≤ 100), b (|b| ≤ 5000), c (|c| ≤ 5000), which mean the corresponding coefficients of a quadratic function.

Output

For each test case, output the answer in a line. Round to 4 digits after the decimal point.

Sample Input

2
1
2 0 0
2
2 0 0
2 -4 2

Sample Output

0.0000
0.5000

解题报告:

由于题中给出的a>=0, 所以a有可能为零,(但是这个题好像并没有在这里设坑)此时曲线为直线,否则曲线为开口向上的抛物线,故为下凸函数,所以F(x)也为下凸函数。故可用三分法求F(x)的极值。先算出F(x)的具体值,然后就可直接三分了。

AC代码:

#include<cstdio>
#include<iostream>
#include<algorithm>
using namespace std;const int MAX = 10000 + 10;
int n, a[MAX], b[MAX], c[MAX];double cal(double x) {                //求F(x)double ans = a[0]*x*x + b[0]*x + c[0];for(int i=1; i<n; i++) {ans = max(ans, a[i]*x*x+b[i]*x+c[i]);}return ans;
}
int main()
{int T;scanf("%d",&T);while(T--){scanf("%d", &n);for(int i=0; i<n; i++) {scanf("%d%d%d", &a[i], &b[i], &c[i]);}double l = 0, r = 1000;           //三分求极值for(int i=0; i<100; i++) {double mid = l + (r-l)/3;double midd = r - (r-l)/3;if(cal(mid) < cal(midd))  r = midd;else  l = mid;}printf("%.4f\n",cal(l));}return 0;
}

总结:

这里还有一个黑科技!不用定义eps来卡精度!直接卡时间!还有二分次数可以多一点,二分区间为10^6,才二分二十多次,可以二分100次。for循环!不用while(l<r)!!

【HDU - 3714 】Error Curves (三分)相关推荐

  1. HDU 2298 Toxophily 【三分算法 or 直接推导物理公式】

    http://acm.hdu.edu.cn/showproblem.php?pid=2298 题目大意:Bob在(0,0)点想射在(x, y)点的水果,初始的速度为v(已知), g=9.8, 求最小的 ...

  2. HDU 3400 Line belt (三分)

    原题链接:http://acm.hdu.edu.cn/showproblem.php?pid=3400 题意:给定两条线段AB,CD,在这两条线段上速度分别为P,Q,在其他地方速度为R,让求A 到 D ...

  3. uva 1476 - Error Curves

    对x的坐标三分: 1 #include<cstdio> 2 #include<algorithm> 3 #define maxn 10009 4 using namespace ...

  4. Uva5009 Error Curves

    已知n条二次曲线si(x) = ai*x^2 + bi*x + ci(ai ≥ 0),定义F(x) = max{si(x)},求出F(x)在[0,1000]上的最小值. 链接:传送门 分析:最大值最小 ...

  5. 第六周 8.23-8.29

    8.23 POJ 3311 Hie with the Pie TSP问题. 先跑一遍Floyd.再状压dp. dp[i][j]表示经过集合i的点最后到达j的最短距离. 转移:取集合i中任意一点j.如果 ...

  6. 算法题目——二次函数三分求极值(HDU-3714)

    题目链接:HDU-3714 题目描述: 对于N个二次函数,求每个二次函数的最小值中的最大值 思路: 使用三分法求极值(递归调用) 对于这种在指定区间里只有一个极值点的函数(凸函数凹函数都可以),我们可 ...

  7. 《算法入门经典大赛——培训指南》第二章考试

    UVa特别考试 UVa站点专门为本书设立的分类题库配合,方便读者提交: http://uva.onlinejudge.org/index.php?option=com_onlinejudge& ...

  8. Paper:Xavier参数初始化之《Understanding the difficulty of training deep feedforward neural networks》的翻译与解读

    Paper:Xavier参数初始化之<Understanding the difficulty of training deep feedforward neural networks>的 ...

  9. Paper:《How far are we from solving the 2D 3D Face Alignment problem? 》解读与翻译

    Paper:<How far are we from solving the 2D & 3D Face Alignment problem? >解读与翻译 目录 How far a ...

最新文章

  1. Python 开发者节省时间的 10 个小技巧
  2. The following packages have been kept back
  3. Spring.net抛砖引玉系列(二)用接口来实现HelloWorld
  4. Customization larbin
  5. 菜鸟学前端之初入江湖
  6. 最小生成树(prim算法)
  7. ACM竞赛、数论内容常用的定理(求解(a/b)%c,乘法逆元,费马小定理)
  8. 人工智能的安全问题与差分隐私【笔记】
  9. android 9 pie公司,Android 9.0正式推送 定名Android Pie
  10. 二叉树学习笔记之利用前序遍历递归创建二叉树
  11. Ajax网络超时和和网络异常
  12. 从今天起,TensorFlow 1.9开始支持树莓派了
  13. 创业邦:谈谈 To B业务的机会
  14. 非参数统计——第二章 单样本问题
  15. 员工请假系统 php,员工请假管理系统(源代码+论文)
  16. 中国一共有多少个神仙?
  17. js摇号程序_车管所怎么摇号流程及查询
  18. 蹭wifi被拉黑怎么办
  19. OIO、NIO、AIO小结
  20. matlab求心率变异性的程序,心率变异性及其相关算法的实现

热门文章

  1. java加载sql2016_SQl Server 2016 with R.
  2. ubuntu 14 java web服务器搭建
  3. 9553下载站java,java se development kit11最新版 64位
  4. 怎么用计算机打分数,电脑excel中分数怎么打出来(图解excel分数输入法)
  5. 从此明白了卷积神经网络(CNN)
  6. vaps 程序直接通信
  7. ppp在linux下的编译和安装
  8. VxWorks平台下计算cpu的利用率
  9. linux suse11 nfs,suse11 nfsserver服务安装
  10. 【转】开源的C# websocket-sharp组件解析