集训第六周 数学概念与方法 UVA 11722 几何概型

---恢复内容开始---

http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=31471

 

题意,两辆火车,分别会在[t1,t2],[s1,s2]的时间段停留在同一个站点w分钟,问两辆火车能够在这个站点相遇的概率。

思路,枚举每一种情况,把两辆火车的相交区间画出来,然后求都在这个区间的概率

 

#include"iostream"
#include"cstdio"
#include"cmath"
using namespace std;

int ca;
double t1,t2,s1,s2,w,ans;

double caculate(double b)
{
    int y1=t1+b,y2=t2+b;
    if(y2<s1) return 0;
    if(y1<s1)
    {
        if(y2<s2) return 0.5*(y2-s1)*(y2-s1);
        else return 0.5*(s2-s1)*(2*y2-s1-s2);
    }
    if(y1<s2)
    {
        if(y2<s2) return 0.5*(t2-t1)*(y1-s1+y2-s1);
        else return (t2-t1)*(s2-s1)-0.5*(s2-y1)*(s2-y1);
    }
    return (t2-t1)*(s2-s1);
}

void Init()
{
   scanf("%lf%lf%lf%lf%lf",&t1,&t2,&s1,&s2,&w);
}

void Work()
{
 ans=(caculate(w)-caculate(-w))/((t2-t1)*(s2-s1));
}

void Print()
{
    printf("Case #%d: %.8f\n",ca++,ans);
}

int main()
{
    int T;
    ca=1;
    cin>>T;
    while(T--)
    {
     Init();
     Work();
     Print();
    }
    return 0;
}
View Code

 

---恢复内容结束---

posted @ 2015-08-17 10:17  江南何采莲  阅读(172)  评论(0编辑  收藏  举报