LOJ10013曲线
题目描述
明明做作业的时候遇到了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曲线的更多相关文章
- caffe的python接口学习(7):绘制loss和accuracy曲线
使用python接口来运行caffe程序,主要的原因是python非常容易可视化.所以不推荐大家在命令行下面运行python程序.如果非要在命令行下面运行,还不如直接用 c++算了. 推荐使用jupy ...
- ROC曲线、PR曲线
在论文的结果分析中,ROC和PR曲线是经常用到的两个有力的展示图. 1.ROC曲线 ROC曲线(receiver operating characteristic)是一种对于灵敏度进行描述的功能图像. ...
- canvas贝塞尔曲线
贝塞尔曲线 Bézier curve(贝塞尔曲线)是应用于二维图形应用程序的数学曲线. 曲线定义:起始点.终止点.控制点.通过调整控制点,贝塞尔曲线的形状会发生变化. 1962年,法国数学家Pierr ...
- UIBezierPath-完善曲线
override func draw(_ rect: CGRect) { let path = UIBezierPath() // 起点 path.move(to: CGPoint(x: , y: ) ...
- 贝塞尔曲线(UIBezierPath)属性、方法汇总
UIBezierPath主要用来绘制矢量图形,它是基于Core Graphics对CGPathRef数据类型和path绘图属性的一个封装,所以是需要图形上下文的(CGContextRef),所以一般U ...
- 基于jquery实现图片拖动和曲线拖放
功能:图片的拖动.曲线的拖放和绘制 一. 准备工作 1. 点击此下载相关的文档 二. 在浏览器中运行 dragDrop.html 文件,即可看到效果 三. 效果图
- 深度掌握SVG路径path的贝塞尔曲线指令
一.数字.公式.函数.变量,哦,NO! 又又一次说起贝塞尔曲线(英语:Bézier curve,维基百科详尽中文释义戳这里),我最近在尝试实现复杂的矢量图形动画,发现对贝塞尔曲线的理解馒头那么厚,是完 ...
- 贝塞尔曲线(cubic bezier)
对于css3的Transitions,网上很多介绍,相信大家都比较了解,这里用最简单的方式介绍下: transition语法:transition:<transition-property> ...
- 精确率与召回率,RoC曲线与PR曲线
在机器学习的算法评估中,尤其是分类算法评估中,我们经常听到精确率(precision)与召回率(recall),RoC曲线与PR曲线这些概念,那这些概念到底有什么用处呢? 首先,我们需要搞清楚几个拗口 ...
随机推荐
- 事务的概念,以及事务在JDBC编程中处理事务的步骤
事务是作为单个逻辑工作单元执行的一系列操作,一个逻辑工作单元必须有四个属性,称为原子性.一致性.隔离性和持久性 (ACID) 属性,只有这样才能成为一个事务 .JDBC处理事务有如下操作: 1,con ...
- JS function 是函数也是对象, 浅谈原型链
JS function 是函数也是对象, 浅谈原型链 JS 唯一支持的继承方式是通过原型链继承, 理解好原型链非常重要, 我记录下我的理解 1. 前言 new 出来的实例有 _proto_ 属性, 并 ...
- Head First 设计模式 —— 03. 装饰器 (Decorator) 模式
思考题 有如下类设计: 如果牛奶的价钱上扬,怎么办?新增一种焦糖调料风味时,怎么办? 造成这种维护上的困难,违反了我们之前提过的哪种设计原则? P82 取出并封装变化的部分,让其他部分不收影响 多用组 ...
- centos7.5安装Oracle11gR2
centos7.5安装Oracle11gR2 说明:由于上一台旧的笔记本电脑(CPU:i5-7200,内存:8G,硬盘:128SSD+1T机械)卸任,所以打算在家搭建一个个人服务器(主要是换不锈钢盆不 ...
- PHP SDK短信接口
/** * sdk 短信接口 * @param $tel 手机号 * @param $content 短信内容 * @return bool */ public function telSDK($te ...
- Angular入门到精通系列教程(10)- 指令(Directive)
1. 摘要 2. 组件与指令之间的关系 2.1. 指令的种类 3. Angular 中指令的用途 4. 指令举例 4.1. 指令功能 4.2. Anuglar CLI生成基本文件 4.3. Direc ...
- [日常填坑系列]CAP食用指南-版本引用问题
一.前言 最近,由于好久没升级底层框架,一直用着netcore2.2版本,导致有些包没能更新到最新的版本,例如:CAP. 然而,在最近升级到CAP:3.1.2版本的时候,发现有点小坑,只能退回到CAP ...
- 一文搞懂MySQL前缀索引
引入 通常在开发中我们需要定义字符串类型的字段,例如用户名或者用户邮箱等. 假设我们在维护一个用户登录系统,用户表的定义: create table User( ID bigint unsigned ...
- Hdfs手动执行Balance
问题发现: 经巡检,服务器中一台节点的hadoop磁盘占用过多,是其它节点的三倍,导致数据严重不均衡. 解决过程: 两种命令: hadoop的bin目录下,运行命令start-balancer.sh ...
- 【Oracle】归档日志的删除操作
[root@sha3 oracle]# rman target / Recovery Manager: Release 10.2.0.4.0 - Production on Tue Jan 20 01 ...