SGU 144. Meeting 概率dp 几何概率分布 难度:0

144. Meeting

time limit per test: 0.25 sec. 
memory limit per test: 4096 KB

 

Two of the three members of the winning team of one of the ACM regional contests are going to meet in order to train for the upcoming World Finals. They decided that they will meet sometime between X o'clock andY o'clock. Because they never get anywhere on time (they were late even on the day of the regional contest), they did not set an exact time when they will meet. However, they decided that the one who gets first at the meeting point will not wait more than Z minutes for the other one (they calculated that, if the other one will not come within Z minutes from the arrival of the first of them, then it is very probable that he will not show up at all). 
Knowing that, in the end, both of them will show up at some time between X o'clock and Y o'clock (not necessarily after an integer number of minutes), compute which is the probability that they will actually meet.

 

Input

The input will contain 2 integer numbers X and Y (0<=X<Y<=24) and one real number Z ( 0 < Z <= 60*(Y-X) ).

 

Output

You should output the required probability with 7 decimal digits (rounded according to the 8th decimal digit).

 

Sample Input

11 12 20.0

Sample Output

0.5555556

思路:就设x为A到达的时间,y为B到达的时间,那么正方形(0,0)->((y-x)*60,(y-x)*60)就是可能的概率范围,那么其中可以等到的是y=x+z和y=x-z这两条直线切掉正方形之后剩下的部分,二切掉的面积可以简单求出
#include<cstdio>

#include <cmath>

using namespace std;

int x,y;

double z;



int main(){

    scanf("%d%d%lf",&x,&y,&z);

    double txy=abs(y-x)*60.000;

    double ans=(2*txy*z-z*z)/(txy*txy);

    printf("%.7f\n",ans);

    return 0;

}

  

你可能感兴趣的:(dp)