首先三分法简单说就是判断序列的最大最小值,该序列为一个凸性函数。通俗来讲,就是该序列必须有一个最大值(或最小值),在最大值(最小值)的左侧序列,必须满足不严格单调递增(递减),右侧序列必须满足不严格单调递减(递增)。

图片来源:https://blog.csdn.net/beiyouyu/article/details/7875480

然后再对二分进行二分,

我们mid比midmid更靠近最值,我们就舍弃右区间,否则我们舍弃左区间。

比较mid与midmid谁最靠近最值,只需要确定mid所在的函数值与midmid所在的函数值的大小。当最值为最大值时,mid与midmid中较大的那个自然更为靠近最值。最值为最小值时同理。


题目:已知点p(x,y),求点p到y=ax^2+bx+c的最短距离。

输入:a,b,c,x,y.(高精度)。

输入:最短距离(保留3位小数)

样例输入:16 107 8 75 173

输出:73.706

其实这题还蛮有坑点的,

首先要明白距离d的公式:即 d = min{ sqrt( (X − x)^2 + (aX^2 + bX + c − y)^2) },化简后也对于d的公式也满足凸性函数。

其实在高精度比较时,不能用<,>,==直接比较

#include<bits/stdc++.h>
using namespace std;
double a, b, c, x, y;
double judge(double xx){return sqrt((xx-x)*(xx-x)+(a*xx*xx+b*xx+c-y)*(a*xx*xx+b*xx+c-y));
}
int main(){while (~scanf("%lf%lf%lf%lf%lf", &a, &b, &c, &x, &y)){double l=-1000,r=1000;while(r-l>=0.00001){//double型比较double mid = (l+r)/2;double midd = (mid+r)/2;if(judge(mid)<=judge(midd)) //判断在左区间还是右区间r=midd;  //最小值在左边我们就舍弃右区间elsel=mid;//反之}printf("%.5f\n",judge(l));}return 0;
}

三分法求点到抛物线的最短距离相关推荐

  1. 【MATLAB】求点到多边形的最短距离

    文章目录 0.引言 1.原理 2.代码及实用教程 0.引言 \qquad点与多边形的关系无非三种--内部.上.外部.本文定义点在多边形内部距离为负,点在多边形边上距离为0,到多边形外部距离为正. 1. ...

  2. 求点到直线的最短距离及垂足

    一.根据两点求直线方程 已知直线上两点为:(x1,x2),(y1,y2); 设方程为:Ax+By+C=0; 1. 求斜率:k=(y2-y1)/(x2-x1): 2. 直线方程为: y-y1=k(x-x ...

  3. 求空间中点到线的最短距离(Revit二次开发)

    在项目中,我们一般是用使用点先投影到线上面,然后再用这个点去和端点去算距离. 但是如果那个点不能投影到线上面时,就会出现一些计算不准确的问题. 也让我们尽量的避开RevitAPI中的一些坑.而且基本适 ...

  4. java 代码 点到线段的最短距离

    // 点到直线的最短距离的判断 点(x0,y0) 到由两点组成的线段(x1,y1) ,( x2,y2 )private double pointToLine(int x1, int y1, int x ...

  5. Android 高德地图计算 Circle 计算上下左右四个点经纬度,Circle和Polygon是否全部包含,计算地图中点到线的最短距离

    /*** 假设地球为一半径为R的表面光滑圆球体,* 表面上同一经线圈上相差1"两点间的距离为 2πR/360/3600* 表面上同一纬线圈上相差1"两点间的距离为 2πR×cos( ...

  6. 点到线段的最短距离算法

    最近做了一个类似Visio的软件,需要对节点连线进行右键删除操作,但是如何确定是否鼠标右键点击到了连线是个难题. 参考了以下内容.留存备用.选用几何矢量算法,最方便的解决了问题,首先了解了向量内积的定 ...

  7. URAL 1348. Goat in the Garden 2[求点到线段的距离]

    题目链接:http://acm.timus.ru/problem.aspx?space=1&num=1348 题目的意思是:求一个点到线段的最短距离和最长距离.. 最长距离比较容易,就是求点到 ...

  8. 一种点到线段的最短距离的方法

    一种点到线段的最短距离的方法 下面介绍点到线段的最短距离的方法: 图 1-6点到线段的最短距离 图1-6描述了一种计算点D到线段AC的最短距离的计算方法.直线方程由经过两点A (x1,y1) 和 C ...

  9. C++功能模块8:点到线段的最短距离

    一.问题描述 在二维平面上,给出三个点的坐标分别为A(ax,ay), B(bx,by), C(cx,cy),求点A到线段BC的最短距离. 注意:是点到线段距离,不是点到直线距离!! 二.问题分析 从点 ...

最新文章

  1. pandas dataframe调整列的位置
  2. mysql的innodb数据库引擎详解
  3. Java中的Set集合类
  4. 码栈开发手册(三)---编码方式开发(高级课程①)
  5. OpenCV parallel_for_并行化代码
  6. 解决火车票网上订票难的方案
  7. 为什么引入Memcached?
  8. 微型计算机突然断电什么信息全部都是,微型计算机的硬件组成阶段作业(函授2014春).doc...
  9. Spring Data JPA 从入门到精通~@PreUpdate异常场景分析
  10. UML类图之六种基本关系详解
  11. EXCEL 宏 拆分数据表 VBA 视频教程下载
  12. 对接支付宝、微信、第三方支付,超详细讲解+demo演示
  13. 系统自带的微软拼音输入法,在输入字母和数字的时候,间隔变大,输入中文没事的 问题。
  14. php sapi 那些坑,安装PHP出现make: *** [sapi/cli/php] Error 1 解决办法
  15. 安卓执法仪录像之进程间共享内存
  16. AutoCAD WS for iPhone, iPod toch, and iPad
  17. I2C、Arduino、ADXL345、
  18. html--样式的建立style,css样式
  19. 为什么医院治不好你的鼻炎
  20. 纯CSS实现一个三角形加圆角三角形

热门文章

  1. 正在运行的dll文件怎么删除?
  2. MATLAB利用deal函数进行赋值
  3. do with与deal with用法
  4. 微型计算机中主板上的主桥,什么是微型计算机一级维修与二级维修如何对主板进行二级维修...
  5. android官方降级包,OPPOK3 ColorOS刷机包(官方最新固件升级包安卓10 ColorOS V6)
  6. 极限编程(Extreme Programming)—走向极限
  7. c++深度优先搜索详解
  8. (ORACLE)PL/SQL 编程
  9. PanDownload复活了!60MB/s
  10. 爬虫+网站开发实例:电影票比价网