zoukankan      html  css  js  c++  java
  • ZOJ Light Bulb

    题意:人左右走动,求影子L的最长长度。

    思路:三分人在D上的位置。注意影子长=D-x+H-(H-h)*D/x。

     1 #include<iostream>
     2 #include<stdio.h>
     3 #include<stdlib.h>
     4 #include<memory.h>
     5 #include<string.h>
     6 #include<algorithm>
     7 #include<cmath>
     8 #define clc(a,b) memset(a,b,sizeof(a))
     9 typedef long double ld;
    10 typedef long long ll;
    11 const int N = 30;
    12 const double eps=1e-9;
    13 const int inf=-100000;
    14 const int maxn=1e5+10;
    15 const double Pi=acos(-1);
    16 using namespace std;
    17 
    18 double H,h,D;
    19 
    20 double calc(double x)
    21 {
    22     return D-x+H-(H-h)*D/x;
    23 }
    24 
    25 double solve(double l,double r)
    26 {
    27     //cout<<"11"<<endl;
    28     double mid,midmid;
    29     double d1,d2;
    30     while(r-l>=eps)
    31     {
    32         mid=(l+r)/2;
    33         midmid=(mid+r)/2;
    34         d1=calc(mid);
    35         d2=calc(midmid);
    36         if(d1>=d2)
    37             r=midmid;
    38         else
    39             l=mid;
    40     }
    41     return d1;
    42 }
    43 
    44 int main()
    45 {
    46     int t;
    47     scanf("%d",&t);
    48     while(t--)
    49     {
    50         scanf("%lf%lf%lf",&H,&h,&D);
    51         printf("%.3lf
    ",solve((H-h)*D/H,D));
    52     }
    53     return 0;
    54 }
    View Code
  • 相关阅读:
    hdu 1166 敌军布阵
    UVA 100
    dfs和bfs 变形课
    hdu 1002 A + B Problem II
    连连看 杭电1175
    跳格子 DFS 加 奇偶截枝
    c语言 判断两直线段是否相交
    poj 3067 Japan
    数状数组
    UVA 10881 Piotr's Ants
  • 原文地址:https://www.cnblogs.com/ITUPC/p/5058191.html
Copyright © 2011-2022 走看看