题目描述

原题来自:SCOI 2010

在一个 2 维平面上有两条传送带,每一条传送带可以看成是一条线段。两条传送带分别为线段  AB和线段CD 。lxhgww 在  AB上的移动速度为 P ,在  CD上的移动速度为 Q ,在平面上的移动速度R 。

现在 lxhgww 想从A  点走到 D 点,他想知道最少需要走多长时间。

输入格式

输入数据第一行是4  个整数,表示  A和  B的坐标,分别为 ;;

第二行是 4 个整数,表示  和  的坐标,分别为 ,;;

第三行是  3个整数,分别是 。P,Q,R.

输出格式

输出数据为一行,表示 lxhgww 从A  点走到D  点的最短时间,保留到小数点后 2 位。

样例

样例输入

0 0 0 100
100 0 100 100
2 2 1

样例输出

136.60

描述:emmmm,看完之后,第一反应是暴力做,wa了几发之后,才晓得用三分套三分,果然不能轻视每一个算法啊。

分析:

给到四个点,我们可以分到最多三个线段。三分ab上的点到得到线段,将改点代入再三分cd上的点得到线段;用返回值(P,Q,R,分别为线段AB,线段CD,平地上的速度),来判断两个点是不是最优点。

上代码:

#include<stdio.h>
#include<math.h>
#include<string.h>
#include<algorithm>
using namespace std;
const double eps=1e-4;
int m,n,k,a1,a2,b1,b2,c1,c2,d1,d2;
double dfs(double x1,double y1,double x2,double y2)
{return sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));
}
double bfs(double x,double y)
{double cx=c1, cy=c2,dx=d1, dy=d2,ab=dfs(a1,a2,x,y)/m;while(fabs(dx-cx)>eps||fabs(dy-cy)>eps){double x1=cx+(dx-cx)/3,x2=dx-(dx-cx)/3;double y1=cy+(dy-cy)/3,y2=dy-(dy-cy)/3;double s1=ab+dfs(x,y,x1,y1)/k+dfs(x1,y1,d1,d2)/n;double s2=ab+dfs(x,y,x2,y2)/k+dfs(x2,y2,d1,d2)/n;if(s1<=s2)dx=x2,dy=y2;elsecx=x1,cy=y1;}return ab+dfs(x,y,cx,cy)/k+dfs(cx,cy,d1,d2)/n;
}
int main()
{scanf("%d%d%d%d",&a1,&a2,&b1,&b2);scanf("%d%d%d%d",&c1,&c2,&d1,&d2);scanf("%d%d%d",&m,&n,&k);double  ax=a1,ay=a2,bx=b1,by=b2;while(fabs(bx-ax)>eps||fabs(by-ay)>eps){double x1=ax+(bx-ax)/3,x2=bx-(bx-ax)/3;double y1=ay+(by-ay)/3,y2=by-(by-ay)/3;if(bfs(x1,y1)<=bfs(x2,y2))bx=x2,by=y2;elseax=x1,ay=y1;}printf("%.2lf\n",bfs(ax,ay));return 0;
}

#10017 「一本通 1.2 练习 4」传送带+三分套三分相关推荐

  1. 「一本通 6.5 练习 3」迷路

    「一本通 6.5 练习 3」迷路 题目描述 大意说一个给你有向图, 一个有n个节点,每个节点相连的边为所需要花费的时间, 问你从1到n 在时间刚好为t是的方案数.输出%2009 注意:不能在某个节点逗 ...

  2. 【C++】「一本通 1.1 例 4」加工生产调度

    「一本通 1.1 例 4」加工生产调度 [来源] [题目描述] [输入格式] [输出格式] [输入样例] [输出样例] [数据范围] [解析] [代码] [来源] 一本通题库-1425 LibreOJ ...

  3. LibreOJ10082. 「一本通 3.3 例 1」Word Rings【二分+SPFA】

    10082. 「一本通 3.3 例 1」Word Rings [题目描述] 传送门 [题解] 将一个字符串看成一条边,字符两端的字符看成节点,长度看成权值.二分枚举答案,最后SPFA刷正环,因为只要有 ...

  4. #10016. 「一本通 1.2 练习 3」灯泡(三分)

    参考博客链接:「一本通 1.2 练习 3」灯泡(三分) #include<stdio.h> #include<string.h> #include<math.h> ...

  5. 【C++】「一本通 1.1 例 2」种树

    「一本通 1.1 例 2」种树 [来源] [题目描述] [输入格式] [输出格式] [输入样例] [输出样例] [解析] [代码] [来源] 一本通题库-1423 LibreOJ-10001 vjud ...

  6. #10001. 「一本通 1.1 例 2」种树

    #10001. 「一本通 1.1 例 2」种树 满足n个区间种树的要求,求最少种多少棵数 思路 按照区间的尾巴来排序,因为如果区间有重叠的种在第一个区间的尾巴可以使得种树更少,所有每次始从尾巴开始种树 ...

  7. 【C++】「一本通 1.1 例 5」智力大冲浪

    「一本通 1.1 例 5」智力大冲浪 [来源] [题目描述] [输入格式] [输出格式] [输入样例] [输出样例] [数据范围] [解析] [代码] [来源] 一本通题库-1426 LibreOJ- ...

  8. 「一本通 1.2 例 2」Best Cow Fences

    题目链接: 链接: [link](信息学奥赛一本通(C++版)在线评测系统). 首先这道题要求找平均数,且要求所选片段长度需要大于等于l.那么首先想到的就是最暴力的方法就是找到所有大于等于l的片段在其 ...

  9. LOJ #10222. 「一本通 6.5 例 4」佳佳的 Fibonacci

    题目链接 题目大意 $$F[i]=F[i-1]+F[i-2]\ (\ F[1]=1\ ,\ F[2]=1\ )$$ $$T[i]=F[1]+2F[2]+3F[3]+...+nF[n]$$ 求$T[n] ...

最新文章

  1. C# BackgroundWorker 详解
  2. c语言findnext递归扫描文件,C++用FindFirstFile、FindNext递归遍历硬盘的文件-Go语言中文社区...
  3. bzoj1174 Toponyms
  4. apache开启gzip压缩
  5. JQuery 动态生成元素添加点击事件
  6. 设置mac笔记本为固定ip
  7. php 实现自动加载更多,$.ajax+php实战教程之下拉时自动加载更多文章原理分析二...
  8. 自己移植Asterisk1.8到OpenWRT下
  9. 银联在线支付---利用测试案例代码模拟支付应用(修改)
  10. 为Web Service添加缓存
  11. 《跟小海龟学Python》部分案例视频集锦
  12. css常用鼠标指针形状代码
  13. 分布式系统关注点(6)——「负载均衡」到底该如何实施?
  14. Gym 100633G Nano alarm-clocks
  15. 一篇报告了解国内首个针对加密流量的检测引擎
  16. JMP系列-基础操作(二)
  17. 临床试验数据管理系统
  18. 计算机类qq网名,最帅的qq名字
  19. 怎么把视频和图片拼在一起?朋友圈会动的拼图视频,快速制作技巧
  20. 数据库小型教务系统,成绩管理系统

热门文章

  1. svn之迁移代码技巧
  2. js(javascript)取得当前时间小时,分钟,秒 以及毫秒
  3. java 栈和队列实现迷宫代码_LeetCode每日一题--剑指 Offer 09. 用两个栈实现队列(Java)
  4. 神抓拍!2020搞笑野生动物摄影大赛,哈哈哈哈哈笑到头掉
  5. 为什么说减速带是脑残的设计?
  6. 120天的烧脑只为孩子设计一套教具~
  7. 读书笔记--互联网必读《长尾理论》作者克里斯.安德森
  8. 计算机科学中的虚拟化包括哪些,计算机虚拟化包括哪几个方面(计算机虚拟技术在计算机教学中的应用探究)...
  9. axure 组件_技巧分享 | Axure后台组件制作的全过程
  10. sql 计算 某字段 不同值出现 的次数_教你如何合理选用和计算电线规格,电线回路分配和注意事项...