BZOJ1857:[SCOI2010]传送带——题解

http://www.lydsy.com/JudgeOnline/problem.php?id=1857

Description

在一个2维平面上有两条传送带,每一条传送带可以看成是一条线段。两条传送带分别为线段AB和线段CD。lxhgww在AB上的移动速度为P,在CD上的移动速度为Q,在平面上的移动速度R。现在lxhgww想从A点走到D点,他想知道最少需要走多长时间

Input

输入数据第一行是4个整数,表示A和B的坐标,分别为Ax,Ay,Bx,By 第二行是4个整数,表示C和D的坐标,分别为Cx,Cy,Dx,Dy 第三行是3个整数,分别是P,Q,R

Output

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

Sample Input

0 0 0 100
100 0 100 100
2 2 1


Sample Output

136.60

HINT

对于100%的数据,1<= Ax,Ay,Bx,By,Cx,Cy,Dx,Dy<=1000
1<=P,Q,R<=10

——————————————————————————————

首先我们取AB一点E,CD一点F,则我们跑了AE+EF+FD。

考虑将其中一个点固定住,那么显然对于另一个点我们三分即可求出这个店的位置(显然该点有最小值,他的左右两点都比他大,所以为单峰函数)。

那么对于最开始的点,我们同样也是单峰函数,也可以三分(通过神奇的代数几何可以证明)

所以这题就是三分套三分。

PS:因为这题x1与x2可能相同,所以不能单独三分x或y,必须同时三分(不然代码量太大了)

#include<cstdio>
#include<cmath>
#include<algorithm>
#include<cstring>
#include<iostream>
using namespace std;
typedef double dl;
const int N=100;
dl ax,ay,bx,by,cx,cy,dx,dy,P,Q,R;
inline dl dis(dl x,dl y,dl xx,dl yy){return sqrt((x-xx)*(x-xx)+(y-yy)*(y-yy));
}
dl sff(dl x,dl y){dl lx=cx,rx=dx,ly=cy,ry=dy;dl lfx,lfy,rfx,rfy;for(int i=1;i<=N;i++){lfx=(lx*2+rx)/3;lfy=(ly*2+ry)/3;rfx=(lfx+rx)/2;rfy=(lfy+ry)/2;dl t1=dis(lfx,lfy,dx,dy)/Q+dis(lfx,lfy,x,y)/R;dl t2=dis(rfx,rfy,dx,dy)/Q+dis(rfx,rfy,x,y)/R;if(t1<t2){rx=rfx;ry=rfy;}else{lx=lfx;ly=lfy;}}return dis(lx,ly,dx,dy)/Q+dis(lx,ly,x,y)/R+dis(x,y,ax,ay)/P;
}
dl sfe(dl lx,dl rx,dl ly,dl ry){dl lex,ley,rex,rey;for(int i=1;i<=N;i++){lex=(lx*2+rx)/3;ley=(ly*2+ry)/3;rex=(lex+rx)/2;rey=(ley+ry)/2;if(sff(lex,ley)<sff(rex,rey)){rx=rex;ry=rey;}else{lx=lex;ly=ley;}}return sff(lx,ly);
}
int main(){cin>>ax>>ay>>bx>>by>>cx>>cy>>dx>>dy>>P>>Q>>R;printf("%.2lf\n",sfe(ax,bx,ay,by));return 0;
}

 

转载于:https://www.cnblogs.com/luyouqi233/p/8007039.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/453490.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mnt/sdcard和storage/sdcard的区别

/mnt 目录&#xff0c;熟悉linux的人都清楚&#xff0c;linux默认挂载外部设备都会挂到这个目录下面去&#xff0c;如将sd卡挂载上去后&#xff0c;会生成一个/mnt/sdcard 目录。 storage/sdcard 目录&#xff0c;这是一个软链接&#xff08;相当于windows的文件夹的快捷方式&a…

kd树的原理

kd树就是一种对k维空间中的实例点进行存储以便对其进行快速检索的树形数据结构&#xff0c;可以运用在k近邻法中&#xff0c;实现快速k近邻搜索。构造kd树相当于不断地用垂直于坐标轴的超平面将k维空间切分。    假设数据集\(T\)的大小是\(m*n\),即\(T{x_1,x_2,...x_m}\),其中…

应聘华为的朋友小心了,应聘华为的悲惨遭遇!

以下内容全部真实&#xff0c;为本人亲身经历。可随时进行当面对质。 本人女朋友&#xff0c;原本是西安一家企业里面的行政助理&#xff0c;工作比较稳定&#xff0c;收入不高&#xff0c;但也基本够她用了。 一天&#xff0c;我的一个同学&#xff08;华为员工&#xff09;说…

力软 java主从表保存_JAVA常用知识总结(十二)——数据库(二)

MySQL主从热备份工作原理简单的说&#xff1a;就是主服务器上执行过的sql语句会保存在binLog里面&#xff0c;别的从服务器把他同步过来&#xff0c;然后重复执行一遍&#xff0c;那么它们就能一直同步啦。整体上来说&#xff0c;复制有3个步骤&#xff1a;作为主服务器的Maste…

HttpClient和DefaultHttpClient

HttpClient 是接口&#xff0c;DefaultHttpClient是实现这个接口的子类 public interface HttpClient {/*** Obtains the parameters for this client.* These parameters will become defaults for all requests being* executed with this client, and for the parameters of…

Go语言版黑白棋

1、游戏说明2、无边框窗口实现3、背景图、最小化、关闭窗口4、界面其它设计5、黑白子提示闪烁效果6、落子7、初始化棋子、改变角色8、倒计时9、吃子10、棋子个数统计、胜负判断11、机器落子 转载于:https://www.cnblogs.com/tennysonsky/p/8442827.html

vue使用render渲染jsx

vue&jsx文档 vue实例属性 // App.ts import hBtn from ./components/hBtn import hUl from ./components/hUlexport default {data(){return {theme: "mdui-theme-pink",accent: "mdui-theme-accent-pink",users:[aoo, boo, coo]}},methods:{},render(…

java中的多线程有什么意义_Java多线程与并发面试题(小结)

1&#xff0c;什么是线程&#xff1f;线程是操作系统能够进行运算调度的最小单位&#xff0c;它被包含在进程之中&#xff0c;是进程中的实际运作单位。程序员可以通过它进行多处理器编程&#xff0c;你可以使用多线程对运算密集型任务提速。比如&#xff0c;如果一个线程完成一…

IT必须掌握的常用命令

一&#xff0c;ping      它是用来检查网络是否通畅或者网络连接速度的命令。作为一个生活在网络上的管理员或者黑客来说&#xff0c;ping命令是第一个必须掌握的DOS命令&#xff0c;它所利用的原理是这样的&#xff1a;网络上的机器都有唯一确定的IP地址&#xff0c;我们…

Callable类

&#xff08;一&#xff09; Callable和Runnable比较相似&#xff0c;都可以用来实现线程任务。但callable使用了泛型设计&#xff0c;使用一个V类型值&#xff0c;能够 在执行结束后返回一个V类型的值。而Runable只会返回一个void&#xff0c;不能够获得执行的结果。 &#x…

Java——线程的创建,线程池

线程 多线程就是一个程序中有多个线程在同时执行。 多线程下CPU的工作原理 实际上&#xff0c;CPU(中央处理器)使用抢占式调度模式在多个线程间进行着高速的切换。对于CPU的一个核而言&#xff0c;某个时刻&#xff0c;只能执行一个线程&#xff0c;而CPU的在多个线程间切换速度…

初级第一旬05— 蓝字观试题

准提法网络佛学院 准提法教学平台 一、高七师提倡初学准提法者&#xff0c;应先观蓝字&#xff0c;在《显密圆通成佛心要集》中有依据吗&#xff1f; 二、正修的时候&#xff0c;如果不得不中断怎么办&#xff1f; 三、蓝字观有几种手印&#xff1f;可以单独使用吗&#xff1f;…

java并查集找朋友圈_图—并查集(解决朋友圈问题)

图也是一种 非线性结构&#xff0c;是由多个顶点组成的关系集合组成的一种数据结构。图可以分为两种&#xff0c;无向图和有向图。★图的定义:★典型问题&#xff1a;利用图能够解决很多问题&#xff0c;这里有一个较为典型的问题&#xff0c;假如已知有n个人和m对好友关系(存于…

技术这东西,不可不看,不可全看.

最近忙着玩开心,好久没来CSDN了,首页上有90后程序员的消息了,稍微感慨一下,曾几何时,自己这个80后还被70后的前辈所笑话,转眼就成了5年经验的老油条了.呵呵. 5年,个人认为经历还是有些代表性的,就跟刚入行或者即将入行的哥们交个底吧,这5年到底学到了什么. 如果你看完这篇文…

rand.nextint()

自从JDK最初版本发布起&#xff0c;我们就可以使用java.util.Random类产生随机数了。在JDK1.2中&#xff0c;Random类有了一个名为nextInt()的方法&#xff1a;public int nextInt(int n)给定一个参数n&#xff0c;nextInt(n)将返回一个大于等于0小于n的随机数&#xff0c;即&a…

Android开发常用的插件及工具

1、GitHub,这个不管是做安卓还是其他&#xff0c;只要是开发就必上的网站&#xff0c;也是天朝没有墙掉为数不多的网站 2、Stack OverFlow,这个和上面一样&#xff0c;国外非常著名的问答网站&#xff0c;在上面基本上很多问题都可以得到解决 3、Genymotion模拟器&#xff0c;搞…

java poi 设置标题_poi生成Word时指定文本样式,如“正文”,“标题1”,“标题2”等...

POI生成Word时&#xff0c;设置段落的样式String style "2"; //标题2的样式XWPFParagraph xwpfParagraph doc.insertNewParagraph(run);xwpfParagraph.setStyle(style);其实设置其他的样式都一样。例如&#xff1a;你想设置你的样式为“标题2”(“标题2”只是你在w…

使用python做最简单的爬虫

使用python做最简单的爬虫 --之心 #第一种方法import urllib2 #将urllib2库引用进来responseurllib2.urlopen("http://www.baidu.com") #调用库中的方法&#xff0c;将请求回应封装到response对象中htmlresponse.read() #调用response对象的read&#xff08;&#x…

SurfaceView介绍

SurfaceView介绍 通常情况程序的View和用户响应都是在同一个线程中处理的&#xff0c;这也是为什么处理长时间事件&#xff08;例如访问网络&#xff09;需要放到另外的线程中去&#xff08;防止阻塞当前UI线程的操作和绘制&#xff09;。但是在其他线程中却不能修改UI元素&…

产品与市场,究竟哪一个重要

上篇我们讲到B2C继B2B和C2C红透之后&#xff0c;也正在迅速的窜红。这一看法可不是我老邢杜撰&#xff0c;凭空想出来的&#xff0c;我们也可以从近期的主要媒体杂志上看到这个弥端。《二十一世纪报道》、《创业家》、《市场与营销》这些经济类杂志&#xff0c;均用大幅篇幅甚至…