题目名称 1500. [UVa 1476] 误差曲线
输入输出 errorcurves.in/out
难度等级 ★★
时间限制 1000 ms (1 s)
内存限制 256 MiB
测试数据 10
题目来源 Gravatarcstdio 于2014-01-21加入
开放分组 全部用户
提交状态
分类标签
UVa 数值方法 数学 三分法
分享题解
通过:73, 提交:183, 通过率:39.89%
GravatarHellc 100 0.362 s 0.43 MiB C++
Gravatarliu_runda 100 0.642 s 0.41 MiB C++
GravatarFoolMike 100 0.789 s 1.44 MiB C++
Gravatar森林 100 0.858 s 0.44 MiB C++
GravatarHellc 100 0.870 s 0.41 MiB C++
GravatarHzoi_Yniverse 100 0.921 s 0.43 MiB C++
GravatarEzoi_XY 100 0.944 s 0.41 MiB C++
Gravatargls1196 100 0.989 s 0.49 MiB C++
GravatarHzoi_Yniverse 100 0.995 s 0.43 MiB C++
Gravatarnancheng58 100 1.009 s 1.31 MiB C++
关于 误差曲线 的近10条评论(全部评论)
精度卡到1e-6
Gravatar雾茗
2019-09-26 08:10 12楼
这题真恶心
Gravatar落痕
2017-11-03 16:05 11楼
看起来是初始化小了……
Gravatar半汪
2016-10-10 19:58 10楼
GravatarSOBER GOOD BOY
2016-10-10 19:04 9楼
答案是让求0到1000的最小值!!!而我却去求-1e6到1e6的!!!
Gravatar_Itachi
2016-10-10 17:37 8楼
这精度卡的我都醉了
GravatarGROWL GOOD BOYส็
2016-10-10 17:36 7楼
噗。。。优选法把输出4位小数改成输出两位小数就过了。。。注意COGS的评测规则以免被卡精度。
这题至少需要保留两位小数,保留一位是错误的。但保留更多位数会使得多输出的位数也被比较,从而对精度要求更严格,优选法被卡好多次。。。
所谓优选法,就是在三分法中用区间的两个黄金分割点代替三等分点,然后可以利用黄金分割点的奇怪性质少算几次函数值。
Gravatarliu_runda
2016-03-14 15:37 6楼
优选法错n次后怒上三分法。。。
Gravatarliu_runda
2016-03-14 15:08 5楼
回复 @ch3coooh :
我是说评测机一共1500道……
Gravatarcstdio
2014-01-22 12:12 4楼
回复 @cstdio :
orz。。。
Gravatarch3coooh
2014-01-22 09:36 3楼

1500. [UVa 1476] 误差曲线

★★   输入文件:errorcurves.in   输出文件:errorcurves.out   评测插件
时间限制:1 s   内存限制:256 MiB

【题目描述】

Josephina是一名聪明的妹子,她最近痴迷于机器学习。她花费了大量精力学习线性判别分析,因为其中有不少有趣的性质。

为了测试算法的性能,她收集了许多数据。每组数据都分成两个部分:训练数据和测试数据。她在训练数据中解算模型的参数,并且在测试数据中测试这个模型。

令她惊讶的是,她发现每组数据的误差曲线都是一条抛物线。一条抛物线对应一个二次函数。在数学中,二次函数指形如$f(x)=ax^2+bx+c$的多项式函数。如果a=0,二次函数就退化为线性函数。

如果只有一条误差曲线,那么计算最小的误差将非常简单。但这里有多组数据,这意味着Josephina将得到多组误差曲线。Josephina希望调整参数以更好地拟合所有数据。因此她必须统计所有的误差曲线。也就是说,她必须处理许多二次函数,并得出一条新的错误曲线来代表所有的错误。现在,她正关注一个与许多二次函数有关的函数的最小值。

这个新函数定义如下:

$F(x)=\max({S_i(x)}),i=1,2,...,n$。$x$的范围是$[0,1000]$。$S_i(x)$是一个二次函数。

Josephina希望知道$F(x)$的最小值。不幸的是,用代数方法求解过于复杂。作为一名机智的程序员,你能帮她解决这个问题吗?

【输入格式】

输入包含多组数据。

输入文件的第1行是1个正整数T(T<100),表示数据组数。

每组数据的第1行是一个正整数n(n<=10000)。

接下来的n行,每行有3个正整数a(0<=a<=100),b(|b|<=5000),c(|c|<=5000),描述一个二次方程的相应系数。

【输出格式】

对每组数据,输出一行一个实数,即答案。

【样例输入】

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

【样例输出】

0.0000
0.5000

【提示】

答案允许有不超过0.01的误差。

【来源】

UVa 1476 Error Curves

刘汝佳,《算法竞赛入门经典训练指南》表2-14