Error Curves

Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)
Total Submission(s): 1198    Accepted Submission(s): 460

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 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
 
Author
LIN, Yue
 
Source
 
Recommend
zhouzeyong
 
 
该题欲求众多二次函数中当x为0-1000之间的每个值的时候函数最大值,
将所有最大值求出输出最小的一个便可以,
解决方法:三分,
中间更新区间的时候调换一下位置即可,因为本体求得是最小值
 
ps:esp取1e-8的时候过不去,为WA,当开到1e-9的时候就过去了,原因可能是本题答案要求输出4位小数点,而在计算二次函数的时候计算了x*x会生成8位小数,所有保留9位小数才能保证精度不受损失
#include<stdio.h>
#include<string.h>
#include<iostream>
#include<algorithm>
using namespace std;
int n;
struct node{
double a,b,c;
}que[];
double esp=1e-;
double ff(double x){
double tmax=que[].a*x*x+que[].b*x+que[].c;
for(int i=;i<n;i++){
tmax=max(tmax,que[i].a*x*x+que[i].b*x+que[i].c);
}
return tmax;
} void calculate(){
double l=,r=1000.0;
double ans1,ans2;
while(l+esp<r){
double mid=(l+r)/2.0;
double midmid=(mid+r)/2.0;
ans1=ff(mid);
ans2=ff(midmid);
if(ans1<ans2){
r=midmid;
}
else
l=mid; }
printf("%.4lf\n",ans1);
} int main(){
int t;
scanf("%d",&t);
while(t--){
memset(que,,sizeof(que));
scanf("%d",&n);
for(int i=;i<n;i++){
scanf("%lf%lf%lf",&que[i].a,&que[i].b,&que[i].c); }
calculate();
}
return ;
}

最新文章

  1. Windows XP系统下添加任务计划常出现问题解决办法
  2. 网络请求的基本知识《极客学院 --AFNetworking 2.x 网络解析详解--1》学习笔记
  3. Android概述(思维导图)
  4. SQL 语法 Join与Union
  5. jq简单选项卡
  6. DedeCMS官方手册
  7. Windows 事件查看器(收集)
  8. js 上传下载(留着备用)
  9. Android源码浅析(五)——关于定制系统,如何给你的Android应用系统签名
  10. 新的 Centos 服务器初始化配置
  11. apache StringUtils 工具类
  12. MongoDB 新建数据库和集合 查询集合
  13. Python random模块random/uniform/randint/choice/getrandbits/shuffle/choice/sample随机函数
  14. bzoj4804: 欧拉心算 欧拉筛
  15. ffmpeg 将jpg转为yuv
  16. 关于在SQLITE数据库表中插入本地系统时间的做法
  17. Python3 break与continue
  18. Struts的default.properties五个配置 一般利用按着配置文件的加载的顺序,后面文件和前面文件相同的配置,后面的会把前面的文件的值覆盖的原则 在struts.xml里面进行配置
  19. FastReport.Net使用:[8]交叉表一
  20. python笔试面试题_视频中(待完善)

热门文章

  1. shp格式数据发布服务:postGIS + postgresql + geoserver
  2. POJ 3614 Sunscreen(贪心,区间单点匹配)
  3. PHP数组排序方法总结
  4. 常量池与方法区以及又读new String对象创建问题
  5. 外网访问FTP服务,解决只能以POST模式访问Filezilla的问题
  6. java打包打包
  7. linux主机状态检测方式
  8. 【函数应用】PHP中关于URL的函数处理
  9. DeepFaceLab进阶(4):通过Colab免费使用Tesla K80 跑模型!
  10. php扩展开发-变量