CSU1159 中南才女 (概率题)

1159: 中南才女

Time Limit: 1 Sec   Memory Limit: 128 MB
SUBMIT: 13   Solved: 10
[SUBMIT] [STATUS]

Description

话说中南有位才女,叫做珊,学校里面很多同学都很喜欢她,想追她做女朋友。hkx也不例外。可是不知道为什么,向她表白的同学都一一落马,一向自卑的hkx一直也不敢表白,hkx得知珊有一天晚上8点钟以后的某段时间会去学校的某个地方弹吉他,可是hkx晚上9点以后才有时间去,虽然晚了一点,但也有机会,所以hkx就去了。

假设珊晚上到达的时刻是等可能的分布在8点到8+L点,hkx到达的时刻是等可能的分布在9点到9+L点。珊到达之后会在那里弹吉他t小时,之后就会离开。hkx到达之后如果没见到珊的话,他就会等上t小时,如果这t小时内珊还不出现,他就会离开。那么hkx能够见到珊的概率是多少呢?

Input

多组数据,每组数据包括两个实数,Lt,一组数据占一行

1<=L<=10

0<=t<=10

Output

输出hkx能够见到珊的概率,四舍五入到小数点后6

Sample Input

2.0 0.0
2.0 3.0

Sample Output

0.000000
1.000000
 
    这道题一开始憋了很长时间不懂做,后来经su学长启发,终于A掉了,Orz su。
    这道概率题可以这样做:
    用几何的概率面积法,像下面这个图,将两个人的时间区间分布到x轴和y轴,那么可以形成一个矩形,矩形面积即为总概率1。
    设|x - y| <= t 与矩形围成的图形的面积(图中红色部分)为s1, 矩形面积为S,那么显然概率 P = s1 / S 。
    (Note:矩形已平移了8个单位):
   
   
   
   
CSU1159 中南才女 (概率题)_第1张图片
  把所有相交的情况都考虑完全就可以了。

 一共六种情况:1、概率为0的

                              2、概率为1的

                              3、移动变换

 

#include <cstdio>
#include <cstring>

int main()
{
   double L, t, p;
   while(~scanf("%lf%lf", &L, &t))
   {
       if(L + t <= 1.0)
       {
           p = 0.0;
       }
       else if(t >= L + 1)
       {
           p = 1.0;
           printf("%lf\n", p);
           continue;
       }
       else if(L - t >= 1 && L + t <= L + 1)
       {
           p = 1.0 / 2.0 * ((L + t - 1) * (L + t - 1) - (L - t - 1) * (L - t - 1));
       }
       else if(L - t <= 1 && L + t <= L + 1)
       {
           p = 1.0 / 2.0 * (L + t - 1) * (L + t - 1);
       }
       else if(L - t >= 1 && L + t >= L + 1 && L + t <= 2 * L + 1)
       {
           p = L * L - 1.0 / 2.0 * (L - t - 1) * (L - t - 1) - 1.0 / 2.0 * (L + 1 - t) * (L + 1 - t);
       }
       else if(L - t <= 1 && L + t >= L + 1 && L + t <= 2 * L + 1)
       {
           p = L * L - 1.0 / 2.0 * (L + 1 - t) * (L + 1 - t);
       }
       printf("%lf\n", p / (L * L));
   }
   return 0;
}


 

你可能感兴趣的:(ACM,概率)