HihoCoder - 1142一道三分题。
以前只接触过二分,现在才接触的三分,刚接触的时候感觉有点陌生。
我们只要理解三分的意思即可做出这道题
#include<set>
#include<map>
#include<queue>
#include<stack>
#include<bitset>
#include<math.h>
#include<string>
#include<vector>
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#define pi acos(-1)
#define close ios::sync_with_stdio(false); cin.tie(0); cout.tie(0);
using namespace std;
typedef long long ll;
const int MAX_N=1000000+50;
const int INF=0x3f3f3f3f;
const double EPS = 1e-9;
ll mod = 1e9+7;
double a,b,c,x,y;
double dis(double x1,double y1,double x2,double y2){
return sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));
}
//计算距离
double Calc(double xx){
double yy = a*xx*xx+b*xx+c;
return dis(xx,yy,x,y);
}
//三分
double Solve(){
double Left,Right;
double mid,midmid;
double mid_value,midmid_value;
Left = -200;Right = 200;
while(Left + EPS < Right){
mid = (Left + Right) / 2.0;
midmid = (mid + Right) / 2.0;
mid_value = Calc(mid);
midmid_value = Calc(midmid);
if(mid_value < midmid_value) Right = midmid;
else Left = mid;
}
return midmid_value;
}
int main(){
while(~scanf("%lf %lf %lf %lf %lf",&a,&b,&c,&x,&y)){
printf("%.3lf\n",Solve());
}
return 0;
}
/*
********
************
####....#.
#..###.....##....
###.......###### ### ###
........... #...# #...#
##*####### #.#.# #.#.#
####*******###### #.#.# #.#.#
...#***.****.*###.... #...# #...#
....**********##..... ### ###
....**** *****....
#### ####
###### ######
##############################################################
#...#......#.##...#......#.##...#......#.##------------------#
###########################################------------------#
#..#....#....##..#....#....##..#....#....#####################
########################################## #----------#
#.....#......##.....#......##.....#......# #----------#
########################################## #----------#
#.#..#....#..##.#..#....#..##.#..#....#..# #----------#
########################################## ############
*/