zoukankan      html  css  js  c++  java
  • hicoder1142 三分求极值

    在直角坐标系中有一条抛物线y=ax^2+bx+c和一个点P(x,y),求点P到抛物线的最短距离d。

    我们代入公式,有:

    $d = min(sqrt{(X - x)^2+(aX^2+bX+c-y)^2})$

    由题面不难发现它是个下凸函数,于是就可以跑三分了

    #include<bits/stdc++.h>
    using namespace std;
    const double esp=1e-6;
    double a,b,c,x,y;
    double dis(double px){
        double py=a*px*px+b*px+c;
        return sqrt((x-px)*(x-px)+(y-py)*(y-py));
    }
    int main(){
        scanf("%lf%lf%lf%lf%lf",&a,&b,&c,&x,&y);
        double l=-200.0,r=200.0;
        while(l+esp<r){
            double lmid=l+(r-l)/3,rmid=r-(r-l)/3;
            if(dis(lmid)<dis(rmid))r=rmid;
            else l=lmid;
        }
        printf("%.3lf",dis(l));
        return 0;
    } 
  • 相关阅读:
    Celery
    windows笔记目录
    Linux笔记目录
    python笔记目录
    rsa
    c#目录
    webpack3.x配置
    RabbitMQ服务安装(Linux)
    JavaScript验证用户输入
    IP地址检测工具
  • 原文地址:https://www.cnblogs.com/NINGLONG/p/7729129.html
Copyright © 2011-2022 走看看