BZOJ1857:[SCOI2010]传送带——题解
http://www.lydsy.com/JudgeOnline/problem.php?id=1857
Description
Input
Output
Sample Input
100 0 100 100
2 2 1
Sample Output
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=;
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=;i<=N;i++){
lfx=(lx*+rx)/;lfy=(ly*+ry)/;
rfx=(lfx+rx)/;rfy=(lfy+ry)/;
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=;i<=N;i++){
lex=(lx*+rx)/;ley=(ly*+ry)/;
rex=(lex+rx)/;rey=(ley+ry)/;
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 ;
}
BZOJ1857:[SCOI2010]传送带——题解的更多相关文章
- BZOJ1857 Scoi2010 传送带 【三分】
BZOJ1857 Scoi2010 传送带 Description 在一个2维平面上有两条传送带,每一条传送带可以看成是一条线段.两条传送带分别为线段AB和线段CD.lxhgww在AB上的移动速度为P ...
- 2018.06.30 BZOJ1857: [Scoi2010]传送带(三分套三分)
1857: [Scoi2010]传送带 Time Limit: 1 Sec Memory Limit: 64 MB Description 在一个2维平面上有两条传送带,每一条传送带可以看成是一条线段 ...
- BZOJ1857 [Scoi2010]传送带 【三分法】
题目链接 BZOJ1857 题解 画画图就发现实际上是在\(AB\)上和\(CD\)上分别选两个点\(E\),\(F\),使得\(t_{AE} + t_{EF} + t_{FD}\)最小 然后猜想到当 ...
- bzoj1857: [Scoi2010]传送带--三分套三分
三分套三分模板 貌似只要是单峰函数就可以用三分求解 #include<stdio.h> #include<string.h> #include<algorithm> ...
- BZOJ1857[SCOI2010]传送带
题目大意:平面上两条线段,一个人从一条线段的一个点到另一条线段的一个点,最小时间是多少 路径肯定是在一条线段上走一段,然后走平面,最后再走另一条线段,那么需要确定的就是在两条线段上走的距离,其他暴力算 ...
- [BZOJ1857][SCOI2010]传送带-[三分]
Description 传送门 Solution 三分套三分.代码简单但是证明苦兮兮.. 假如我们在AB上选了一个点G,求到该点到D的最小时间. 图中b与CD垂直.设目前从G到D所耗时间最短的路径为G ...
- 洛谷 P2571 [SCOI2010]传送带 题解
每日一题 day51 打卡 Analysis 这道题是用非常恶心的三分套三分做的,有一个技巧是不要枚举坐标,枚举两条线段构成三角形的相似比就好了. 了解思路就还挺好写的(尽管我还调了三天) #incl ...
- P2571 [SCOI2010]传送带——hyl天梦
P2571 [SCOI2010]传送带题解----天梦 如写的不好,请多见谅. 对于这道题,我首先想说,确实困惑了我好久,看网上的各种题解,却都不尽人意,思路早已明白,却不会操作.最后想想,还是觉得自 ...
- 【BZOJ1857】[Scoi2010]传送带 三分套三分
[BZOJ1857][Scoi2010]传送带 Description 在一个2维平面上有两条传送带,每一条传送带可以看成是一条线段.两条传送带分别为线段AB和线段CD.lxhgww在AB上的移动速度 ...
随机推荐
- 关于BLOB/TEXT字段存储设计及性能的简单研究
简单研究了一下BLOB/TEXT字段对数据库性能的影响,得到一个大概的结论:(未验证) 无论MySQL还是MSSQL,都可以通过把BLOB/TEXT数据存储在行外的方式提高性能 把BLOB/TEXT字 ...
- java 创建具有参数化类型的数组
1. List<String>[] ls; Object[] objects = ls; objects[1] = new ArrayList<Integer>(); 先把数组 ...
- Qt 解析EXcel文件
写代码需要将excel中的文件导入到数据库中 网上找到以为大神写的,但是当初没有保存,也没有找到 我几乎是原分不动拔下来的,希望大神莫怪 void AddDialog::readExcel(QStri ...
- MVC数据的注册及验证简单总结
一.注解 注解是一种通用机制,可以用来向框架注入元数据,同时,框架不只驱动元数据的验证,还可以在生成显示和编辑模型的HTML标记时使用元数据. 二.验证注册的使用 1.Require:属性为Null或 ...
- vim python自动补全插件:pydiction
vim python自动补全插件:pydiction 可以实现下面python代码的自动补全: 1.简单python关键词补全 2.python 函数补全带括号 3.python 模块补全 4.pyt ...
- EasyUI学习心得
因为要修改十几年前的一个项目界面,打9月份开始学习EasyUI,很多事情都要自己试过才知道,小问题会浪费很多时间.所以,就在此记录一下,随时更新. 一.引号 EasyUI的自定义关键字的识别,API文 ...
- "Generative Adversarial Nets" Notes
- Ian J.Goodfellow 中文翻译:https://blog.csdn.net/wspba/article/details/54577236 代码实现:https://github.com ...
- Jquery复选框
Jquery复选框 1.checkbox list选择 代码: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//E ...
- 今年暑假不AC (贪心)
Description “今年暑假不AC?” “是的.” “那你干什么呢?” “看世界杯呀,笨蛋!” “@#$%^&*%...” 确实如此,世界杯来了,球迷的节日也来了,估计很多ACMer也会 ...
- c# 两个软件传参
1.socket 传参,类似于小型的服务器和客户端,一端发送,另一端保持监听状态. 2.通过第三方 数据库或者文件.