zoukankan      html  css  js  c++  java
  • 集训第六周 数学概念与方法 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
    ",ca++,ans);
    }
    
    int main()
    {
        int T;
        ca=1;
        cin>>T;
        while(T--)
        {
         Init();
         Work();
         Print();
        }
        return 0;
    }
    View Code

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

  • 相关阅读:
    如果一切需要重学,2014年应该学哪些技术?
    LINUX 更新
    LINUX学习
    判断设备是笔记本,还是台式机
    DUILIB 实现微信气泡聊天效果
    OC学习1
    DUILIB 背景贴图
    DUILIB CDialogBuilder 使用问题
    my english dream
    oracle 函数
  • 原文地址:https://www.cnblogs.com/zsyacm666666/p/4735837.html
Copyright © 2011-2022 走看看