UVA 11722 Joining with Friend 概率与期望

题目链接:http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=2769

题目大意:有两个人,甲可能会在时间区间[t1,t2]中的任意时刻以相同的概率密度到达城市A,乙可能会在时间区间[s1,s2]中的任意时刻以相同的概率密度到达城市A,并且两人都会在A停留W分钟,问 你们见面的概率是多大?

解题思路: 以坐标(t1,s1),(t2,s2)作边平行于坐标轴的矩形,再作直线y=x+w和y=x-w,它们之间与矩形相覆盖的阴影面积占矩形总面积比就是所求的答案,但是对于面积的求法需要分类讨论。具体见代码:

#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int t1,t2,s1,s2,w;
double S(int b)//一条直线和矩形相交左下阴影的面积
{
    double sum=(t2-t1)*(s2-s1)*1.0;//矩形总面积
    int x1=t1,y1=t1+b;  //左交点的坐标
    int x2=t2,y2=t2+b;  //右交点的坐标
    if(y2<=s1) return 0;
    if(y1<=s1)
    {
        if(y2<=s2) return (y2-s1)*(y2-s1)*0.5;//右下三角形
        else  return (t2-s2+b+t2-s1+b)*(s2-s1)*0.5;//右下梯形
    }
    else if(y1<s2)
    {
        if(y2>=s2) return sum-(s2-b-t1)*(s2-b-t1)*0.5;//总面积-左上三角形
        else return (t1+b-s1+t2+b-s1)*(t2-t1)*0.5;//右下梯形
    }
    return sum;
}
int main()
{
    int T,cas=1;
    scanf("%d",&T);
    while(T--)
    {
        scanf("%d%d%d%d%d",&t1,&t2,&s1,&s2,&w);
        double ans=S(w)-S(-w);
        ans=ans/((t2-t1)*(s2-s1))*1.0;
        printf("Case #%d: %.8lf\n",cas++,ans);
    }
    return 0;
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值