题目描述

明明做作业的时候遇到了n  个二次函数s_i(x)=ax^2+bx+c ,他突发奇想设计了一个新的函数 f(x)=max{s_i(x)},i=1,2,...,n。

明明现在想求这个函数在 [0,1000] 的最小值,要求精确到小数点后四位,四舍五入。

输入格式

输入包含 t 组数据,每组第一行一个整数n ;

接下来 n 行,每行 3 个整数 a,b,c  ,用来表示每个二次函数的 3 个系数。注意:二次函数有可能退化成一次。

输出格式

每组数据输出一行,表示新函数 f(x) 的在区间 [0,1000] 上的最小值。精确到小数点后四位,四舍五入。

样例

样例输入

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

样例输出

0.0000
0.5000

数据范围与提示

对于 50% 的数据,1<=n<=100;

对于 100% 的数据,1<=t<=10,1<=n<=1e5 ,1<=a<=100 ,1<=|b|<=5e3 ,0<=|c|<=5e3 。

___________________________________________

这个题目用到分治中的一种特殊形式,三分。

首先,题目的真正难点在于能够看出:n个函数的最大值构成的新函数仍然是一个开口向上的波谷。

然后就是三分了。三分用来求波谷的最小值(或波峰的最大值)

以求波谷的最小值为例:

求区间[l,r]上的最小值,首先把区间长度等分成三分,分割点为ll和rr

sf=(r-l)/3

ll=l+sf,rr=r-sf;

这样区间就变成了[l,ll,rr,r]四点分成的三份。

然后求ll和rr点对应的函数值,由于是波谷,那么谷底所在点可能有三个可能:

1、在[ll,rr]区间内,由于是波谷,开口向上,那么f[l]>f[ll],f[rr]<f[r],那么可以去掉[l,ll]和[rr,r]两个区间。

2、在[l,ll]区间内,由于是波谷,开口向上,那么f[ll]<f[rr]<f[r],那么可以去掉[ll,rr]和[rr,r]两个区间。

3、在[rr,r]区间内,由于是波谷,开口向上,那么f[l]>f[ll]>f[rr],那么可以去掉[l,ll]和[ll,rr]两个区间。。

那么综合上面三种情况,如果f[ll]>f[rr],那么谷底可能在中间区[ll,rr]或右侧区[rr,r],那么左侧[l,rr]去掉;如果f[ll]<f[rr],那么谷底可能在中间区[ll,rr]或左侧区[l,ll],那么右侧[rr,r]去掉.

___________________________________________

 1 #include<bits/stdc++.h>
2 using namespace std;
3 const int maxn=1e5+10;
4 int a[maxn],b[maxn],c[maxn];
5 int t,n;
6 double work(double x)
7 {
8 double rt=-1e9;
9 for(int i=1;i<=n;++i)
10 rt=max(rt,a[i]*x*x+b[i]*x+c[i]);
11 return rt;
12 }
13 int main()
14 {
15 scanf("%d",&t);
16 while(t--)
17 {
18 scanf("%d",&n);
19 for(int i=1;i<=n;++i)
20 scanf("%d%d%d",a+i,b+i,c+i);
21 double l=0,r=1000,ll,rr;
22 while(l+1e-10<r)
23 {
24 double sf=(r-l)/3;
25 ll=l+sf;rr=r-sf;
26 if(work(ll)<work(rr))r=rr;
27 else l=ll;
28 }
29 printf("%.4lf\n",work((l+r)/2));
30 }
31 return 0;
32 }

LOJ10013曲线的更多相关文章

  1. caffe的python接口学习(7):绘制loss和accuracy曲线

    使用python接口来运行caffe程序,主要的原因是python非常容易可视化.所以不推荐大家在命令行下面运行python程序.如果非要在命令行下面运行,还不如直接用 c++算了. 推荐使用jupy ...

  2. ROC曲线、PR曲线

    在论文的结果分析中,ROC和PR曲线是经常用到的两个有力的展示图. 1.ROC曲线 ROC曲线(receiver operating characteristic)是一种对于灵敏度进行描述的功能图像. ...

  3. canvas贝塞尔曲线

    贝塞尔曲线 Bézier curve(贝塞尔曲线)是应用于二维图形应用程序的数学曲线. 曲线定义:起始点.终止点.控制点.通过调整控制点,贝塞尔曲线的形状会发生变化. 1962年,法国数学家Pierr ...

  4. UIBezierPath-完善曲线

    override func draw(_ rect: CGRect) { let path = UIBezierPath() // 起点 path.move(to: CGPoint(x: , y: ) ...

  5. 贝塞尔曲线(UIBezierPath)属性、方法汇总

    UIBezierPath主要用来绘制矢量图形,它是基于Core Graphics对CGPathRef数据类型和path绘图属性的一个封装,所以是需要图形上下文的(CGContextRef),所以一般U ...

  6. 基于jquery实现图片拖动和曲线拖放

    功能:图片的拖动.曲线的拖放和绘制 一. 准备工作 1. 点击此下载相关的文档 二. 在浏览器中运行 dragDrop.html 文件,即可看到效果 三. 效果图

  7. 深度掌握SVG路径path的贝塞尔曲线指令

    一.数字.公式.函数.变量,哦,NO! 又又一次说起贝塞尔曲线(英语:Bézier curve,维基百科详尽中文释义戳这里),我最近在尝试实现复杂的矢量图形动画,发现对贝塞尔曲线的理解馒头那么厚,是完 ...

  8. 贝塞尔曲线(cubic bezier)

    对于css3的Transitions,网上很多介绍,相信大家都比较了解,这里用最简单的方式介绍下: transition语法:transition:<transition-property> ...

  9. 精确率与召回率,RoC曲线与PR曲线

    在机器学习的算法评估中,尤其是分类算法评估中,我们经常听到精确率(precision)与召回率(recall),RoC曲线与PR曲线这些概念,那这些概念到底有什么用处呢? 首先,我们需要搞清楚几个拗口 ...

随机推荐

  1. 在jsp页面嵌入java代码让某些div显示或者隐藏

    <!--监测评价人显示评价人信息 --> <% if("D3".equals(role_flag)){%> <div id="crud&qu ...

  2. python之scrapy篇(一)

    一.首先创建工程(cmd中进行) scrapy startproject xxx 二.编写Item文件 添加要字段 # -*- coding: utf-8 -*- # Define here the ...

  3. 知乎上看到的一篇讲解Epoll的文章,较形象生动

    作者:蓝形参链接:https://www.zhihu.com/question/20122137/answer/14049112来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明 ...

  4. 7.24,《C Primer Plus》复习第十五章第二小题

    编写一个程序,通过命令行参数读取两个二进制字符串,对这两个二进制数使用~运算符,&运算符.|运算符,并以二进制字符串形式打印结果(如果无法使用命令行环境,可以通过交互式让程序读取字符串) 编写 ...

  5. “You may need an appropriate loader to handle this file type”

    这里不能为空!!!!!!!!!!!!!!!!!!!!

  6. ConcurrentHashMap 并发之美

    一.前言 她如暴风雨中的一叶扁舟,在高并发的大风大浪下疾驰而过,眼看就要被湮灭,却又在绝境中绝处逢生 编写一套即稳定.高效.且支持并发的代码,不说难如登天,却也绝非易事. 一直有小伙伴向我咨询关于Co ...

  7. 多年经验总结,写出最惊艳的 Markdown 高级用法

    点赞再看,养成习惯,微信搜索[高级前端进阶]关注我. 本文 GitHub https://github.com/yygmind 已收录,有一线大厂面试完整考点和系列文章,欢迎 Star. 最近在学习的 ...

  8. 十八般武艺玩转GaussDB(DWS)性能调优:SQL改写

    摘要:本文将系统介绍在GaussDB(DWS)系统中影响性能的坏味道SQL及SQL模式,帮助大家能够从原理层面尽快识别这些坏味道SQL,在调优过程中及时发现问题,进行整改. 数据库的应用中,充斥着坏味 ...

  9. LeetCode485 最大连续1的个数

    给定一个二进制数组, 计算其中最大连续1的个数. 示例 1: 输入: [1,1,0,1,1,1] 输出: 3 解释: 开头的两位和最后的三位都是连续1,所以最大连续1的个数是 3. 注意: 输入的数组 ...

  10. pip不是内部或外部命令解决方法

    问题 已经配置好Python环境,但是安装依赖时,出现pip不是内部或外部命令. 解决方法 找到pip.exe文件所在的目录,将所在路径配置到环境变量path中. 再次输入pip