bzoj1857: [Scoi2010]传送带
来源:互联网 发布:少女前线淘宝 账号 编辑:程序博客网 时间:2024/06/06 19:42
显然时间函数有单调性,自然会想到三分。(貌似大家都知道这是三分模板题。。。)
#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#include<cmath>using namespace std;const double eps=1e-4;int ax,ay,bx,by,cx,cy,dx,dy,p,q,r;double ans=0;double dis(double ax,double ay,double bx,double by){ return sqrt((bx-ax)*(bx-ax)+(by-ay)*(by-ay));}double work(double sx,double sy,double x,double y){ return dis(ax,ay,sx,sy)/p+dis(sx,sy,x,y)/r+dis(x,y,dx,dy)/q;}double calc(double sx,double sy){ double lx=cx,ly=cy,rx=dx,ry=dy; while(fabs(lx-rx)>eps||fabs(ly-ry)>eps) { double mx=lx+(rx-lx)/3,my=ly+(ry-ly)/3,mmx=mx+(rx-mx)/2,mmy=my+(ry-my)/2; if(work(sx,sy,mx,my)>work(sx,sy,mmx,mmy)) { lx=mx;ly=my; } else { rx=mmx;ry=mmy; } } return work(sx,sy,lx,ly);}int main(){ scanf("%d%d%d%d%d%d%d%d%d%d%d",&ax,&ay,&bx,&by,&cx,&cy,&dx,&dy,&p,&q,&r); double lx=ax,ly=ay,rx=bx,ry=by; while(fabs(lx-rx)>eps||fabs(ly-ry)>eps) { double mx=lx+(rx-lx)/3,my=ly+(ry-ly)/3,mmx=mx+(rx-mx)/2,mmy=my+(ry-my)/2; if(calc(mx,my)>calc(mmx,mmy)) { lx=mx;ly=my; } else { rx=mmx;ry=mmy; } } ans=min(calc(lx,ly),calc(rx,ry)); printf("%.2lf",ans); return 0;}
阅读全文
0 0
- 【bzoj1857】[Scoi2010]传送带
- 【bzoj1857】[Scoi2010]传送带 三分法
- Bzoj1857:[Scoi2010]传送带:三分
- bzoj1857 SCOI2010传送带
- 【bzoj1857】 Scoi2010—传送带
- bzoj1857: [Scoi2010]传送带
- bzoj1857: [Scoi2010]传送带
- bzoj1857: [Scoi2010]传送带
- [BZOJ1857][SCOI2010]传送带
- [SCOI2010真题][bzoj1857]传送带
- bzoj1857 [Scoi2010]传送带 [三分套三分]
- 【模版】bzoj1857[Scoi2010]传送带 三分套三分
- 【BZOJ1857】[Scoi2010]传送带【三分套三分】
- 三分——BZOJ1857/Luogu2571 [SCOI2010]传送带
- BZOJ1857 SCOI2010 传送带 三分套三分
- [BZOJ1857][Scoi2010]传送带(三分套三分+计算几何)
- bzoj1857 传送带
- 【SCOI2010】传送带
- C#174课的主要内容
- Html-超链接、表格、表单
- 适配器模式
- Node.js 回调函数
- 《shell脚本学习指南》学习笔记之入门 二 grep详细解析
- bzoj1857: [Scoi2010]传送带
- Linux进程通信之共享内存
- JavaSE 成员变量与局部变量
- WPF实现Android或IOS的Tab控件效果
- 走向云计算之MapReduce原理和运行流程详解
- jquery和javascript常用方法比较
- webpack的安装与环境配置
- Scrapy爬虫实战四:糗事百科
- 【简记】Computer Networking——network layer(part three)