zoukankan      html  css  js  c++  java
  • bzoj1857

    三分的入门题,如果从AB上一点走到D是一个单峰函数
    从AB开始向CD传送带走的那个点也是一个单峰函数
    显然三分套三分

    const eps=1e-5;
    var ax,ay,bx,by,cx,cy,dx,dy,p,q,v:longint;
        l,r,m:double;
    
    function calc(r1,r2:double):double;
      var s1,s2,s3,x1,x2,y1,y2:double;
      begin
        x1:=ax+(bx-ax)*r1;
        y1:=ay+(by-ay)*r1;
        x2:=cx+(dx-cx)*r2;
        y2:=cy+(dy-cy)*r2;
        s1:=sqrt(sqr(x1-ax)+sqr(y1-ay));
        s2:=sqrt(sqr(dx-x2)+sqr(dy-y2));
        s3:=sqrt(sqr(x1-x2)+sqr(y1-y2));
        exit(s1/p+s2/q+s3/v);
      end;
    
    function work(x:double):double;
      var l,r,m:double;
      begin
        l:=0;
        r:=1;
        while l+eps<r do
        begin
          m:=(r-l)/3;
          if calc(x,l+m)>calc(x,r-m) then l:=l+m
          else r:=r-m;
        end;
        exit(calc(x,l));
      end;
    
    begin
      readln(ax,ay,bx,by);
      readln(cx,cy,dx,dy);
      readln(p,q,v);
      l:=0;
      r:=1;
      while l+eps<r do  //三分精度
      begin
        m:=(r-l)/3;
        if work(l+m)>work(r-m) then l:=l+m
        else r:=r-m;
      end;
      writeln(work(l):0:2);
    end.
    View Code
  • 相关阅读:
    运算符
    格式化输出
    while循环
    if 判断语句
    Swift # 字典
    Swift # 数组
    Swift # 字符串
    [ Swift # 函数 ]
    [ Bubble Sort ]& block
    数据结构 # 二叉树/堆/栈
  • 原文地址:https://www.cnblogs.com/phile/p/4472937.html
Copyright © 2011-2022 走看看