您的位置:首页 > 其它

UVA 11722 概率几何

2017-04-20 00:19 295 查看


题意很简单,就是高中概率几何最基础的问题:两个人分别等可能在[t1,t2]和[s1,s2]出现,若一个人等待超过w分钟,则两人无法相遇,求相遇概率。

设人分别为x,y,满足

t1<=x<=t2

s1<=y<=s2

|x-y|<=w

求上式所包围的面积即可

本题的难度在于求解各种情况,如图6种情况













#include<iostream>
#include<cmath>
#include<cstring>
#include<cstdio>
#include<vector>
#include<stack>
#include<queue>
#include<algorithm>
#include<sstream>
#define inf 0x3f3f3f3f
#define ll long long
using namespace std;
double sum;
int t1,t2,s1,s2,w;
double area(int b)//求y=x+b下方与矩形的公共面积
{
double s;
if(t1+b>=s2)
s=sum;
else if(t2+b<=s1)
s=0;
else if(t2+b>=s2&&t1+b>=s1)
s=sum-0.5*(s2-t1-b)*(s2-b-t1);
else if(t1+b<s1&&t2+b>s2)
s=0.5*(t2-s1+b+t2-s2+b)*(s2-s1);
else if(t1+b>=s1&&t2+b>s1)
s=0.5*(t1+b-s1+t2+b-s1)*(t2-t1);
else
s=0.5*(t2-s1+b)*(t2+b-s1);
return s;
}
int main()
{
int T;
cin>>T;
int kcase=1;
while(T--)
{
cin>>t1>>t2>>s1>>s2>>w;
sum=(t2-t1)*(s2-s1);
double t=area(w)-area(-w);
double p=t/sum;
printf("Case #%d: %0.8f\n",kcase++,p);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: