题意:

     题意给你两个公路 A-B C-D 和三个速度V(ab) V(cd) 和 V(两条公路之间) 问你从A到D的最短时间是多少.

思路:

   一开始暴力了其中的一条边,每次加0.01,另一条边用的三分,结果wa掉了,感觉不wa暴力一条边时间上也够呛,后来看了下题解,人家用的是两重三分,就是三分其中一条边,当对于最外层的那个三分的某两个点也就是 mid mmid,我们在三分两次,取得最优,

确实如此,因为后来想了想,对于整体来说,总函数里面有两个未知数,无法确定是他的性质,

但是如果我们分开来想,分成两部分,那么他们就含有凸性(或凹性)了,这样我们就可以三分在短时间内找到精度满足条件的解..


#include<stdio.h>
#include<math.h> #define eps 0.0001

typedef struct
{
double
x ,y;
}
NODE; NODE A ,B ,C ,D;
double
P ,Q ,R; double dis(NODE X ,NODE Y)
{
double
tmp = pow(X.x - Y.x ,2.0) + pow(X.y - Y.y ,2.0);
return
sqrt(tmp);
} double
CD_3F(NODE now)
{

NODE low ,up ,mid ,mmid;
double
t1 ,t2;
low = C ,up = D;
while(
1)
{

mid.x = (low.x + up.x) / 2;
mid.y = (low.y + up.y) / 2;
t1 = dis(now ,mid) / R + dis(mid ,D) / Q; mmid.x = (mid.x + up.x) / 2;
mmid.y = (mid.y + up.y) / 2;
t2 = dis(now ,mmid) / R + dis(mmid ,D) / Q; if(t1 > t2) low = mid;
else
up = mmid; if(dis(low ,up) < eps) break;
}
return
t2;
} double
AB_3F()
{

NODE low ,up ,mid ,mmid;
low = A ,up = B;
double
t1 ,t2;
while(
1)
{
//puts("ok");
mid.x = (low.x + up.x) / 2;
mid.y = (low.y + up.y) / 2;
t1 = dis(A ,mid) / P + CD_3F(mid); mmid.x = (mid.x + up.x) / 2;
mmid.y = (mid.y + up.y) / 2;
t2 = dis(A ,mmid) / P + CD_3F(mmid); if(t1 > t2) low = mid;
else
up = mmid; if(dis(low ,up) < eps) break;
}
return
t1;
} int main ()
{
int
t;
scanf("%d" ,&t);
while(
t--)
{

scanf("%lf %lf %lf %lf" ,&A.x ,&A.y ,&B.x ,&B.y);
scanf("%lf %lf %lf %lf" ,&C.x ,&C.y ,&D.x ,&D.y);
scanf("%lf %lf %lf" ,&P ,&Q ,&R);
printf("%.2lf\n" ,AB_3F());
}
return
0;
}

hdu3400 两重三分的更多相关文章

  1. POJ 1475 Pushing Boxes 搜索- 两重BFS

    题目地址: http://poj.org/problem?id=1475 两重BFS就行了,第一重是搜索箱子,第二重搜索人能不能到达推箱子的地方. AC代码: #include <iostrea ...

  2. POJ-2689 Prime Distance (两重筛素数,区间平移)

    Prime Distance Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 13961   Accepted: 3725 D ...

  3. 2018/7/31--zznu-oj-问题 G: 方差 普拉斯--【两重暴力循环求方差即可!】

    问题 G: 方差 普拉斯 时间限制: 1 Sec  内存限制: 128 MB提交: 94  解决: 17[提交] [状态] [讨论版] [命题人:admin] 题目描述 方差(样本方差)是每个样本值与 ...

  4. 创业的游戏 明星APP上市前后的冰火两重天

    明星APP上市前后的冰火两重天" title="创业的游戏 明星APP上市前后的冰火两重天"> 当下,似乎只有创业才是能够实现笑看风云变幻的那条"黄金通道 ...

  5. 对logistic回归分析的两重认识

    logistic回归,回归给人的直观印象只是要求解一个模型的系数,然后可以预测某个变量的回归值.而logistic回归在应用中多了一层含义,它经常应用于分类中.第一重认识:logistic是给真正的回 ...

  6. hdu 5104 Primes Problem(prime 将三重循环化两重)

    //宁用大量的二维不用量小的三维 #include <iostream> #include<cstdio> #include<cstring> using name ...

  7. vue实现两重列表集合,点击显示,点击隐藏的折叠效果,(默认显示集合最新一条数据,点击展开,显示集合所有数据)

    效果图: 默认显示最新一条数据: 点击显示所有数据: 代码: 说明:这里主要是 这块用来控制显示或者隐藏 根据当前点击的  这个方法里传递的index 对应  isShow 数组里的index  ,对 ...

  8. hdu-3790 最短路径问题---dijkstra两重权值

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=3790 题目大意: 给你n个点,m条无向边,每条边都有长度d和花费p,给你起点s终点t,要求输出起点到 ...

  9. HDU3400+三分

    三分出两个中间的位置即可. /* 两次三分 */ #include<stdio.h> #include<string.h> #include<stdlib.h> # ...

随机推荐

  1. mysql启动报错1067进程意外终止

    查找了网上的很多种方法都没用,最终找到了我的mysql的安装路径,删除了my.ini配置文件,再重新启动就成功了!

  2. Java基础学习--集合

    集合 List集合的特点 1.有序的数据集合,存储元素和取出元素的顺序是一致的(存储123,取出123) 2.有索引,包含了一些带索引的方法 3.允许存储重复的元素 List接口中带索引的方法 add ...

  3. 冒泡算法及其优化(java)

    冒泡算法的规则: 每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放待排序序列的起始位置(或末尾位置),直到全部待排序的数据元素排完 动态图: 对应代码 static void swap(i ...

  4. LNMP配置——Nginx配置 —— Nginx的访问日志

    一.配置 先来看看Nginx的日志格式 #grep -A2 log_format /usr/local/nginx/conf/nginx.conf log_format combined_realip ...

  5. JS逆向-抠代码的第四天【手把手学会抠代码】

    今天是md5巩固项目,该项目比昨天的复杂一些,但方法思路是一样的. 今天的目标:https://www.webportal.top/ 打开网站,填入账号密码(密码项目以123456做测试).点击登录抓 ...

  6. [源码分析] 消息队列 Kombu 之 Hub

    [源码分析] 消息队列 Kombu 之 Hub 0x00 摘要 本系列我们介绍消息队列 Kombu.Kombu 的定位是一个兼容 AMQP 协议的消息队列抽象.通过本文,大家可以了解 Kombu 中的 ...

  7. python-3-1

    一.布尔类型    布尔值为: True 和Flase 注:区分大小写,如果写true 和false   不代表布尔类型值 小于 大于 小于等于  大于等于  对应这些判断 一般就是用布尔类型进行判断 ...

  8. 攻防世界 reverse 进阶5-7

    5.re-for-50-plz-50  tu-ctf-2016 流程很简单,异或比较 1 x=list('cbtcqLUBChERV[[Nh@_X^D]X_YPV[CJ') 2 y=0x37 3 z= ...

  9. 第16 章 : 深入理解 etcd:基于原理解析

    深入理解 etcd:基于原理解析 本文将主要分享以下三方面的内容: 第一部分,会为大家介绍 etcd 项目发展的整个历程,从诞生至今 etcd 经历的那些重要的时刻: 第二部分,会为大家介绍 etcd ...

  10. ES9的新特性:正则表达式RegExp

    简介 正则表达式是我们做数据匹配的时候常用的一种工具,虽然正则表达式的语法并不复杂,但是如果多种语法组合起来会给人一种无从下手的感觉. 于是正则表达式成了程序员的噩梦.今天我们来看一下如何在ES9中玩 ...