三分套三分模板

貌似只要是单峰函数就可以用三分求解

 #include<stdio.h>
 #include<string.h>
 #include<algorithm>
 #include<math.h>
 #define eps 1e-9
 using namespace std;
 struct node{
     double x,y;
 }a,b,c,d;
 double p,q,r;

 inline node get(node a, node b, double p){
     node ans;
     ans.x=a.x+(b.x-a.x)*p;
     ans.y=a.y+(b.y-a.y)*p;
     return ans;
 }

 inline double dist(node x, node y){
     return sqrt((x.x-y.x)*(x.x-y.x)+(x.y-y.y)*(x.y-y.y));
 }

 inline double calc(node x, node y){
     return dist(a,x)/p+dist(x,y)/r+dist(y,d)/q;
 }

 inline double solve(node t){
     double l=0.0,r=1.0,ans;
     while (fabs(l-r)>eps){
         , m2=m1+(r-l)*;
         node x=get(c,d,m1), y=get(c,d,m2);
         if (calc(t,x)<calc(t,y)) ans=m1,r=m2; else ans=m2, l=m1;
     }
     node x=get(c,d,ans);
     return calc(t,x);
 }

 int main(){
     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);
     double l=0.0,r=1.0,ans;
     while (fabs(l-r)>eps){
         , m2=m1+(r-l)*;
         node x=get(a,b,m1), y=get(a,b,m2);
         if (solve(x)<solve(y)) ans=m1,r=m2; else ans=m2,l=m1;
     }
     node x=get(a,b,ans);
     printf("%.2lf\n", solve(x));
     ;
 }

bzoj1857: [Scoi2010]传送带--三分套三分的更多相关文章

  1. 【BZOJ1857】[Scoi2010]传送带 三分套三分

    [BZOJ1857][Scoi2010]传送带 Description 在一个2维平面上有两条传送带,每一条传送带可以看成是一条线段.两条传送带分别为线段AB和线段CD.lxhgww在AB上的移动速度 ...

  2. 2018.06.30 BZOJ1857: [Scoi2010]传送带(三分套三分)

    1857: [Scoi2010]传送带 Time Limit: 1 Sec Memory Limit: 64 MB Description 在一个2维平面上有两条传送带,每一条传送带可以看成是一条线段 ...

  3. BZOJ1857 Scoi2010 传送带 【三分】

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

  4. 【BZOJ-1857】传送带 三分套三分

    1857: [Scoi2010]传送带 Time Limit: 1 Sec  Memory Limit: 64 MBSubmit: 1077  Solved: 575[Submit][Status][ ...

  5. Bzoj 1857: [Scoi2010]传送带(三分套三分)

    1857: [Scoi2010]传送带 Time Limit: 1 Sec Memory Limit: 64 MB Description 在一个2维平面上有两条传送带,每一条传送带可以看成是一条线段 ...

  6. [luogu2571][bzoj1857][SCOI2010]传送门【三分套三分】

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

  7. 【BZOJ1857】传送带(分治经典:三分套三分)

    点此看题面 大致题意: 一个二维平面上有两条传送带\(AB\)和\(CD\),\(AB\)传送带的移动速度为\(P\),\(CD\)传送带的移动速度为\(Q\),步行速度为\(R\),问你从\(A\) ...

  8. [BZOJ1857][SCOI2010]传送带-[三分]

    Description 传送门 Solution 三分套三分.代码简单但是证明苦兮兮.. 假如我们在AB上选了一个点G,求到该点到D的最小时间. 图中b与CD垂直.设目前从G到D所耗时间最短的路径为G ...

  9. BZOJ 1857 传送带 (三分套三分)

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

随机推荐

  1. 从DataReader中手动串行化JSON

    void WriteDataReader(StringBuilder sb, IDataReader reader) { ) { sb.Append("null"); return ...

  2. SecureCRT中文显示乱码

    环境:SecureCRT登陆REDHAT5.3 LINUX系统 问题:vi编辑器编辑文件时文件中的内容中文显示乱码,但是直接使用linux系统terminal打开此文件时中文显示正常,确诊问题出现在客 ...

  3. 系统剖析Android中的内存泄漏

    [转发]作为Android开发人员,我们或多或少都听说过内存泄漏.那么何为内存泄漏,Android中的内存泄漏又是什么样子的呢,本文将简单概括的进行一些总结. 关于内存泄露的定义,我可以理解成这样 没 ...

  4. c++ 常数后缀说明

    1.数值常数有:整型常数.浮点常数:    2.只有数值常数才有后缀说明:    3.数值常数后缀不区分字母大小写.    (1)整型常数的表示形式有:十进制形式.以0开头的八进制形式.以0x开头的十 ...

  5. ZK常用命令

    zkcli脚本命令介绍 zkcli    连接默认zookeeper服务器 zkcli -server ip:port    连接指定的zookeeper服务器 create -s -e path d ...

  6. JavaScript权威指南读书笔记

    JavaScript 1.变量 变量是一个表示值的符号,是一个名字,他的本质是值: var x; //----声明一个变量: 值通过等号“=”赋给变量,x = 16; 对象是名/值对的集合,或字符串到 ...

  7. sql in(1,2,3)参数化查询,错误在将 varchar 值 '1,2,3,4' 转换成数据类型 int 时失败

    解决办法 string userIds = "1,2,3,4";using (SqlConnection conn = new SqlConnection(connectionSt ...

  8. 思维题(转换) HDU 4370 0 or 1

    题目传送门 题意:题目巨晦涩的传递出1点和n点的初度等于入度等于1, 其余点出度和入度相等 分析:求最小和可以转换成求最短路,这样符合条件,但是还有一种情况.1点形成一个环,n点也形成一个环,这样也是 ...

  9. Mac 自带 apache

    1.启动服务器 sudo apachectl start http://localhost   能访问就ok sudo apachectl stop sudo apachectl restart ht ...

  10. jquery toastr introduction

    1.资源 http://www.jq22.com/jquery-info476 http://www.jq22.com/yanshi476 Nuget Install-Package toastr 官 ...