BZOJ 2131 [scoi2010] 传送带
@(BZOJ)[三分法]
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
Solution
三分套三分.
就當是練一下手吧.
#include<cstdio>
#include<cmath>
#include<ctime>
#define hKReporter main
using namespace std;
struct vertex
{
double x, y;
inline void getInput()
{
scanf("%lf%lf", &x, &y);
}
}a, b, c, d;
double p, q, r;
inline double getThatJunk(double x1, double y1, double x2, double y2)
{
return sqrt((x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2));
}
inline double getDistance(double pro1,double pro2)
{
double x1, y1, x2, y2;
x1 = a.x + (b.x - a.x) * pro1, y1 = a.y + (b.y - a.y) * pro1;
x2 = c.x + (d.x - c.x) * pro2, y2 = c.y + (d.y - c.y) * pro2;
return getThatJunk(a.x, a.y, x1, y1) / p + getThatJunk(x1, y1, x2, y2) / r + getThatJunk(x2, y2, d.x, d.y)/q;
}
double get(double x)
{
double L = 0, R = 1;
for(int i = 0; i < 1 << 10; i ++)
{
double mid1 = L + (R - L) / 3, mid2 = L + (R - L) / 3 * 2;
double k1 = getDistance(x, mid1), k2 = getDistance(x, mid2);
if(k1 < k2)
R = mid2;
else
L = mid1;
}
return getDistance(x, L);
}
int hKReporter()
{
#ifndef ONLINE_JUDGE
freopen("BZOJ1857.in", "r", stdin);
freopen("BZOJ1857.out", "w", stdout);
// Sleep(1);
#endif
a.getInput(), b.getInput(), c.getInput(), d.getInput();
scanf("%lf%lf%lf", &p, &q, &r);
double L = 0, R = 1;
for(int i = 0; i < 1 << 10; i ++)
{
double mid1 = L + (R - L) / 3, mid2 = L + (R - L) / 3 * 2;
double k1 = get(mid1), k2 = get(mid2);
if(k1 < k2)
R = mid2;
else
L = mid1;
}
printf("%.2lf", get(L));
}
BZOJ 2131 [scoi2010] 传送带的更多相关文章
- BZOJ 1857: [Scoi2010]传送带
二次联通门 : BZOJ 1857: [Scoi2010]传送带 /* BZOJ 1857: [Scoi2010]传送带 三分套三分 可能是吧..dalao们都说明显是一个单峰函数 可是我证不出来.. ...
- bzoj 1857: [Scoi2010]传送带 三分
题目链接 1857: [Scoi2010]传送带 Time Limit: 1 Sec Memory Limit: 64 MBSubmit: 934 Solved: 501[Submit][Stat ...
- Bzoj 1857: [Scoi2010]传送带(三分套三分)
1857: [Scoi2010]传送带 Time Limit: 1 Sec Memory Limit: 64 MB Description 在一个2维平面上有两条传送带,每一条传送带可以看成是一条线段 ...
- BZOJ 1857: [Scoi2010]传送带(三分套三分)
Time Limit: 1 Sec Memory Limit: 64 MB Submit: 2549 Solved: 1370 [Submit][Status][Discuss] Descriptio ...
- P2571 [SCOI2010]传送带
P2571 [SCOI2010]传送带 三分套三分. 前提条件:P3382 [模板]三分法 三分,求区间内单峰函数的最大/最小值. 我们把两条线段都跑三分,先ab后cd,求出最小值. 可以直接将二维坐 ...
- 2018.06.30 BZOJ1857: [Scoi2010]传送带(三分套三分)
1857: [Scoi2010]传送带 Time Limit: 1 Sec Memory Limit: 64 MB Description 在一个2维平面上有两条传送带,每一条传送带可以看成是一条线段 ...
- [SCOI2010]传送带 三分法
[SCOI2010]传送带 LG传送门 三分法模板. 关于为什么可以三分,我选择感性理解,有人证明了,总之我是懒得证了. 假设路径是\(A \to E \to F \to D\),\(E\)和\(F\ ...
- 【BZOJ1857】[Scoi2010]传送带 三分套三分
[BZOJ1857][Scoi2010]传送带 Description 在一个2维平面上有两条传送带,每一条传送带可以看成是一条线段.两条传送带分别为线段AB和线段CD.lxhgww在AB上的移动速度 ...
- BZOJ1857 Scoi2010 传送带 【三分】
BZOJ1857 Scoi2010 传送带 Description 在一个2维平面上有两条传送带,每一条传送带可以看成是一条线段.两条传送带分别为线段AB和线段CD.lxhgww在AB上的移动速度为P ...
随机推荐
- python——全局变量&局部变量
>>> count = 5 >>> def function(): count = 10 print(10) >>> function() 10 ...
- 【报错】invalid or unexpected token
结果发现是把英文的,写成了中文字符,系统没法识别.
- 【12】Firefox 快捷键大全及更改和定制快捷键的方法
[12]Firefox 快捷键大全及更改和定制快捷键的方法 答: Firefox 本身没有提供更改和定制快捷键的选项,若有需要,请安装扩展 Keyconfig 来解决. 安装地址如下: Keycon ...
- python画图axis和axes以及subplot的区别
https://www.zhihu.com/question/51745620 axis顾名思义就是轴. axes简单说来就是灵活的子图.
- Nginx从入门到放弃-第4章 深度学习篇
4-1 Nginx动静分离_动静分离场景演示 4-2 Nginx动静分离_动静分离场景演示1 4-3 Nginx的动静分离_动静分离场景演示2 4-4 Rewrite规则_rewrite规则的作用 4 ...
- day03_06 变量详解
print ("hello world") print("alex") print("jinxing") print("3乘以4= ...
- PHP-7.1 源代码学习:字节码生成 之 "$a = 1"
前言 本文通过分析 "$a=1" 这个 PHP 语句的编译和执行来窥探 php-cli 解释执行逻辑 准备 参考之前的系列文章,在 ubuntu 环境下下载,编译 PHP 源代码 ...
- npm link & run npm script
npm link & run npm script https://blog.csdn.net/juhaotian/article/details/78672390 npm link命令可以将 ...
- 【Luogu】P2774方格取数问题(最大点权独立集)
题目链接 不知道为啥坠大点权独立集的做法跟最大权闭合图差不多? qwq 放个链接 #include<cstdio> #include<cstring> #include< ...
- mybatis学习(九)——动态sql
MyBatis 的强大特性之一便是它的动态 SQL.可以根据不同条件拼接 SQL 语句. 动态 SQL 元素和使用 JSTL 或其他类似基于 XML 的文本处理器相似.主要由以下几种元素. if wh ...