zoukankan      html  css  js  c++  java
  • 用于投影Light Bulb(三分)

    最近朋友几篇文章介绍了改用于投影的文章. 关联文章的地址

        http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3203

        


    Light Bulb

    Time Limit: 1 Second      Memory Limit: 32768 KB

    Compared to wildleopard's wealthiness, his brother mildleopard is rather poor. His house is narrow and he has only one light bulb in his house. Every night, he is wandering in his incommodious house, thinking of how to earn more money. One day, he found that the length of his shadow was changing from time to time while walking between the light bulb and the wall of his house. A sudden thought ran through his mind and he wanted to know the maximum length of his shadow.

    用于和投影

    Input

    The first line of the input contains an integer T (T <= 100), indicating the number of cases.

    Each test case contains three real numbers H, h and D in one line. H is the height of the light bulb while h is the height of mildleopard. D is distance between the light bulb and the wall. All numbers are in range from 10-2 to 103, both inclusive, and H- h >= 10-2.

    Output

    For each test case, output the maximum length of mildleopard's shadow in one line, accurate up to three decimal places..

    Sample Input

    3
    2 1 0.5
    2 0.5 3
    4 3 4
    

    Sample Output

    1.000
    0.750
    4.000
    

    Author:   GUAN, Yao
    Source:   The 6th Zhejiang Provincial Collegiate Programming Contest
    Submit      Status
        每日一道理
    在每个人心中,都曾停留过那些值得怀念的人,也许还在,也许早已消逝,在茫茫人海中丢失,于是,那份怀念便得凄凉,因为模糊的记忆中只剩下一个“空壳”,没有什么,甚至连自己的心都装不下,时间把一切抹平,也把当日的泪水封锁,因为已经没有,怀念只是悲凉!

        
     

        解析:用三分法求解:

         

      三分法与二分法

        1.共同点:

        都是用于查找在某一区间上的目标值,通常是最小值,最大值,目标值等

        2.不同点:

        二分法:使用于枯燥函数,一般指递增或递减函数类型

        三分法:用于凸函数,例如;y=x^2函数类型,用于求极值

        以下是模板;

        Eps=1e-10;

        Double  cale(double x )

        {}

        二分法查找:

        Double  solvedouble  lowdouble  high,double V{

        Int mid;

        While(low+eps<high)

     {

      Mid=(low+high)/2.0;

        If(cale(mid)>V)

        High=mid;

        Else

        Low=mid;

     }

        Return low;

        }

        三分法:

        double solve(double l,double r)

        {

        double m;

        double mm;

        while(l+ep<r)//注意高精度

        {

            m=(l+r)/2.0;

            mm=(m+r)/2.0;

            if(lenth(m)>lenth(mm))//取最大值(如果取最小值的话则变成(lengthm<length(mm)))

             r=mm;

             else

             l=m;

        }

        return l;

        }

         

        这里求最大阴影长度,可以根据相似三角形求得

        L/x+L=h/H;则有L=(h*x)/(H-h)

        分为两种情况:

        一,全体投影都在地上:即x+L<=D,则输出长度为L

        二,投在了地上和墙上: L1=(D*h-D*H+H*x)/x;//墙上投影(根据相似三角形可得)

        则,输出长度为:D-x+L1

        

    #include<string.h>
    
    #include<stdio.h>
    
    #include<math.h>
    
    #include<algorithm>
    
    #include <iostream>
    
    using namespace std;
    
    const double ep=1e-10;
    
    double H,h,D;
    
    double lenth(double x)
    
    {
    
        double L,L1;
    
        L=(h*x)/(H-h);//有相似三角形性质得来
    
        if(x+L<=D)//当只能投影在地上时
    
         return L;
    
        L1=(D*h-D*H+H*x)/x;//墙上投影
    
        return D-x+L1;
    
    }
    
    
    double solve(double l,double r)
    
    {
    
        double m;
    
        double mm;
    
        while(l+ep<r)//注意高精度
    
        {
    
            m=(l+r)/2.0;
    
            mm=(m+r)/2.0;
    
            if(lenth(m)>lenth(mm))//取最大值
    
             r=mm;
    
             else
    
             l=m;
    
        }
    
        return l;
    
    }
    
    int main()
    
    {
    
        int T;
    
        double L;
    
        scanf("%d",&T);
    
        while(T--)
    
        { scanf("%lf%lf%lf",&H,&h,&D);
    
                L=lenth(solve(0,D));
    
                printf("%.3lf\n",L);
    
        }
    
        return 0;
    
    }

        
     

    文章结束给大家分享下程序员的一些笑话语录: 很多所谓的牛人也不过如此,离开了你,微软还是微软,Google还是Google,苹果还是苹果,暴雪还是暴雪,而这些牛人离开了公司,自己什么都不是。

    --------------------------------- 原创文章 By
    用于和投影
    ---------------------------------

  • 相关阅读:
    看了前辈缠中说禅及其反响,忍不住想说些东西
    利弗莫尔的操盘精华篇
    缠中说禅:教你炒股票108课(转载)
    评温斯坦的炒股书(非常重要,常看看)
    本散女2
    使用PHP-GTK编写一个windows桌面应用程序
    php.exe php-cgi.exe php-win.exe的区别
    php调试利器之phpdbg
    yaf框架安装配置
    phalcon框架安装
  • 原文地址:https://www.cnblogs.com/jiangu66/p/3098196.html
Copyright © 2011-2022 走看看