1500. 误差曲线

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

【题目描述】

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

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

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

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

这个新函数定义如下:

F(x)=max(Si(x)),i=1,2,...,n。x的范围是[0,1000]。Si(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的误差。

【来源】

UVa1476 Error Curves

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

思路:

本题的难点在于读题。

读透了题目后,这个题就是三分的模板题。

#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#define MAXN 10100
#define eps 1e-7
using namespace std;
int T,n;
double ans;
double a[MAXN],b[MAXN],c[MAXN],minn[MAXN];
double l,r,mid1,mid2;
double f(double x){
ans=-0x7f7f7f7f;
for(int i=;i<=n;i++) ans=max(ans,x*x*a[i]+x*b[i]+c[i]);
return ans;
}
int main(){
freopen("errorcurves.in","r",stdin);
freopen("errorcurves.out","w",stdout);
scanf("%d",&T);
while(T--){
scanf("%d",&n);
for(int i=;i<=n;i++)
scanf("%lf%lf%lf",&a[i],&b[i],&c[i]);
l=;r=;
while(r-l>eps){
mid1=(l+r)/;
mid2=(mid1+r)/;
if(f(mid1)>f(mid2)) l=mid1;
else r=mid2;
}
printf("%.4lf\n",f(l));
}
}

最新文章

  1. Mac下git命令自动补全
  2. CF459C Pashmak and Buses (构造d位k进制数
  3. android studio遇到的问题(记录总结)
  4. 从零开始--系统深入学习IOS(使用Swift---带链接)
  5. ab测试出现error: connection reset by peer的解决方案
  6. dojo/dom源码
  7. zookeeper入门知识
  8. javascript中event.clientX和event.clientY用法的注意事项
  9. 微信公众号支付|微信H5支付|微信扫码支付|小程序支付|APP微信支付解决方案总结
  10. 程序员奇谈之我写的程序不可能有bug篇
  11. [JDK8]读写锁的改进:StampedLock
  12. iOS CALayer 绘图模糊有锯齿的解决方案
  13. 如何做自己的服务监控?spring boot 1.x服务监控揭秘
  14. Android Selector 与 Shape 基本用法
  15. BZOJ 3812 : 主旋律
  16. Maven打包Swing程序
  17. python 抓取request信息,各种cookie,user-agent类的信息,只调试到http可以抓取,https貌似不行。
  18. 杂项:Office Visio
  19. Java多线程(1) 创建
  20. Object-C中的字符串对象2-可变字符串

热门文章

  1. 使用React Hook后的一些体会
  2. win7笔记本设置wifi热点
  3. Dictionary as a set of counters
  4. [学习笔记]AJAX学习
  5. PHP万能的连接数据库
  6. Spring项目的配置文件们(web.xml context servlet springmvc)
  7. Spring:dispatchservlet
  8. P3157 [CQOI2011]动态逆序对 CDQ分治
  9. 学习Go语言之简易ORM框架
  10. 二叉查找树BST 模板