三分求单峰函数模板题,讲解略。
P.S.听说三分是骗分大发?!
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<cmath>
using namespace std;
#define eps 1e-10
double a,b,c,px,py;
double l=-400,r=400;
inline double dis(double x) {
return sqrt((px-x)*(px-x)+(a*x*x+b*x+c-py)*(a*x*x+b*x+c-py));
}
int main() {
scanf("%lf%lf%lf%lf%lf",&a,&b,&c,&px,&py);
while (l+eps<r) {
double ml=l+(r-l)/3,mr=r-(r-l)/3,vl=dis(ml),vr=dis(mr);
if (vl<vr) r=mr;
else l=ml;
}
printf("%.3lf\n",dis(l));
return 0;
}