hihocoder 1142 三分·三分求极值
2015-08-05 22:20
369 查看
三分去逼近一个凹/凸函数,很好的思想!这题要注意的是,循环终止的条件是,取的这两个点足够近(不是x坐标足够近)。
#include <iostream> #include <cstring> #include <cstdio> #include <queue> #include <algorithm> #include <stdlib.h> #include <math.h> #include <stack> using namespace std; const double eps = 1e-4; double a,b,c,x,y; double dist(double x1,double y1,double x2,double y2){ return sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2)); } double getY(double xx){ return a*xx*xx+b*xx+c; } double calc(double xx){ double yy = a*xx*xx+b*xx+c; return dist(xx,yy,x,y); } int main(){ while(cin>>a>>b>>c>>x>>y){ double l=-10000; double r= 10000; double lres,rres; while(dist(l,getY(l),r,getY(r))>eps){ double d=(r-l)/3; double lmid=l+d; double rmid=r-d; lres=calc(lmid); rres=calc(rmid); if(lres<rres){ r=rmid; }else{ l=lmid; } } double ans=calc((l+r)/2); printf("%.3f\n",ans); } return 0; }
相关文章推荐
- Android json解析--GSON
- Java—Lambda基础
- UVALive 4171 Bulletin Board
- PowerDesigner使用教程
- HDU 4365 Palindrome graph(几何变换+快速幂)
- jQuery实现图片简单轮播——div自适应图片img
- 在PHP中定义常量时,const与define的区别
- JAVA _IO流(1)
- 20150805 oracle笔记
- shell学习
- DP - hdu5290 Bombing plan
- shell学习笔记
- Quartz2D-05.利用贝瑟尔曲线实现进度条功能
- Longest Palindromic Substring
- hibernate学习系列-----(4)hibernate基本查询上篇:HQL基本查询
- ASCII,Unicode和UTF-8
- 初识linux 命令(一)
- 【西祠日志】【16】今天很安静,还不错,一点点进步吧
- Maximal Square
- The Accomodation of Students