1. 程式人生 > >hihoCoder #1142 : 三分·三分求極值

hihoCoder #1142 : 三分·三分求極值

med 思路 size class can amp mit ges 距離

#1142 : 三分·三分求極值

時間限制:10000ms 單點時限:1000ms 內存限制:256MB

描述

這一次我們就簡單一點了,題目在此:

技術分享

在直角坐標系中有一條拋物線y=ax^2+bx+c和一個點P(x,y),求點P到拋物線的最短距離d。

提示:三分法

輸入

第1行:5個整數a,b,c,x,y。前三個數構成拋物線的參數,後兩個數x,y表示P點坐標。-200≤a,b,c,x,y≤200

輸出

第1行:1個實數d,保留3位小數(四舍五入)

樣例輸入
2 8 2 -2 6
樣例輸出
2.437
思路:三分橫坐標。
#include<cmath> 
#include
<cstdio> #include<cstring> #include<iostream> #include<algorithm> #define eps 1e-7 using namespace std; double a,b,c,x,y; double l,r,mid1,mid2; double f(double xx){ double yy=a*xx*xx+b*xx+c; double dis=sqrt((xx-x)*(xx-x)+(yy-y)*(yy-y)); return dis; }
int main(){ scanf("%lf%lf%lf%lf%lf",&a,&b,&c,&x,&y); l=-200,r=200; while(r-l>eps){ mid1=(l+r)/2; mid2=(mid1+r)/2; if(f(mid1)<=f(mid2)) r=mid2; else l=mid1; } printf("%.3lf",f(l)); }

 

hihoCoder #1142 : 三分·三分求極值