bzoj 1857: [Scoi2010]传送带 三分
2017-03-22 20:23
393 查看
三分:
单峰函数求最值,设$mid1=l+(r-l)/3$,$mid2=l+2*(r-l)/3$。
假设是一个上凸的函数,当$f(mid1)<f(mid2)$,$mid1$左侧不可能有最值。
否则$mid2$右侧不可能有最值。
这道题如果固定住一个点那另一个点的位置与时间关系是一个单峰函数,具体可以用求导找零点证。
那就推测选的第一个点的函数也是单峰的,直接三分套三分就好了。
单峰函数求最值,设$mid1=l+(r-l)/3$,$mid2=l+2*(r-l)/3$。
假设是一个上凸的函数,当$f(mid1)<f(mid2)$,$mid1$左侧不可能有最值。
否则$mid2$右侧不可能有最值。
这道题如果固定住一个点那另一个点的位置与时间关系是一个单峰函数,具体可以用求导找零点证。
那就推测选的第一个点的函数也是单峰的,直接三分套三分就好了。
#include<iostream> #include<cstdio> #include<cstring> #include<algorithm> #include<cmath> using namespace std; double ax,ay,bx,by,cx,cy,dx,dy; double p,q,r; const double eps=1e-3; double dis(double x1,double y1,double x2,double y2) { return sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2)); } double a1,a2; double cal(double x,double y) { double lx=cx,ly=cy,rx=dx,ry=dy; double x1,y1,x2,y2,t1,t2; while(fabs(rx-lx)>eps||fabs(ry-ly)>eps) { x1=lx+(rx-lx)/3;y1=ly+(ry-ly)/3; x2=lx+(rx-lx)/3*2;y2=ly+(ry-ly)/3*2; t1=dis(a1,a2,x,y)/p+dis(x1,y1,x,y)/r+dis(x1,y1,dx,dy)/q; t2=dis(a1,a2,x,y)/p+dis(x2,y2,x,y)/r+dis(x2,y2,dx,dy)/q; if(t1>t2) { lx=x1;ly=y1; } else { rx=x2;ry=y2; } } return dis(a1,a2,x,y)/p+dis(lx,ly,x,y)/r+dis(lx,ly,dx,dy)/q; } int main() { scanf("%lf%lf%lf%lf%lf%lf%lf%lf%lf%lf%lf",&ax,&ay,&bx,&by,&cx,&cy,&dx,&dy,&p,&q,&r); double x1,y1,x2,y2,t1,t2; a1=ax;a2=ay; while(fabs(bx-ax)>eps||fabs(by-ay)>eps) { x1=ax+(bx-ax)/3;y1=ay+(by-ay)/3; x2=ax+(bx-ax)/3*2;y2=ay+(by-ay)/3*2; t1=cal(x1,y1);t2=cal(x2,y2); if(t1>t2) { ax=x1;ay=y1; } else { bx=x2;by=y2; } } printf("%.2lf\n",cal(ax,ay)); return 0; }
相关文章推荐
- 【bzoj1857】[Scoi2010]传送带 三分套三分
- [BZOJ 1857][SCOI 2010]传送带(三分套三分)
- 【模版】bzoj1857[Scoi2010]传送带 三分套三分
- BZOJ 1857 SCOI 2010 传送带 三分套三分
- 【BZOJ 1857】【SCOI2010】传送带 【三分套三分】
- 【BZOJ1857】【SCOI2010】传送带 [三分]
- bzoj1857 [Scoi2010]传送带 [三分套三分]
- [省选前题目整理][BZOJ 1857][SCOI 2010]传送带(三分套三分)
- Bzoj 1857: [Scoi2010]传送带(三分套三分)
- BZOJ 1857 [Scoi2010]传送带 三分套三分
- 【BZOJ1857】[Scoi2010]传送带【三分套三分】
- bzoj 1857: [Scoi2010]传送带 三分套三分
- 【BZOJ1857】[Scoi2010]传送带 三分套三分
- 【BZOJ】1857: [Scoi2010]传送带(三分)
- bzoj 1857 [SCOI2010]传送带【三分套三分】
- [BZOJ1857][Scoi2010]传送带(三分套三分+计算几何)
- BZOJ 1857 [Scoi2010]传送带 三分套三分
- 【BZOJ 1857】[Scoi2010]传送带 三分套三分
- BZOJ 1857 [Scoi2010]传送带 三分
- BZOJ1857 SCOI2010 传送带 三分套三分