zoukankan      html  css  js  c++  java
  • uva 11722 Joining with Friend

    https://vjudge.net/problem/UVA-11722

    题意:你和朋友都要乘坐火车,并且都会途径A城市。你们很想会面,但是你们到达这个城市的准确时刻都无法确定。你会在时间区间[t1,t2]中的任意时刻以相同的概率密度到达。你的朋友则会在时间区间[s1,s2]的任意时刻以相同的概率密度到达。你们的火车都会在A城市停留w分钟。只有你们所在的火车都停在A城市的时候,才可能会面。你的任务是计算出现这种情况的概率。 

    计算阴影部分占矩形的比例就是答案

    在计算阴影面积时,要分类讨论线与矩形左上、左右、下上、下右、不相交(包含矩形、不包含矩形)

    两条直线同时讨论情况很多

    两条直线其实分类的情况完全相同,所以可以用 上面直线下边的面积-下面直线下边的面积

    #include<cstdio>
    using namespace std;
    int t,s1,s2,t1,t2,w;
    double solve(int w)
    {
        if(t2+w<=s1) return 0;
        if(t1+w>=s2) return (s2-s1)*(t2-t1);
        if(s1-w<=t1)// left
        {
            if(s2-w>=t2)//right
                return 0.5*(t1+w-s1+t2+w-s1)*(t2-t1);
            else//up
                return (s2-s1)*(t2-t1)-0.5*(s2-(t1+w))*(s2-w-t1);
        }
        else//down
        {
            if(t2+w<s2) //right
                return 0.5*(t2-(s1-w))*(t2+w-s1);
            else //up
                return 0.5*(t2-(s2-w)+t2-(s1-w))*(s2-s1);
        }
    }
    int main()
    {
        scanf("%d",&t);
        for(int tt=1;tt<=t;tt++)
        {
            scanf("%d%d%d%d%d",&s1,&s2,&t1,&t2,&w);
            double ans=solve(w)-solve(-w);
            printf("Case #%d: %.8lf
    ",tt,ans/((t2-t1)*(s2-s1)));
        }
    }
  • 相关阅读:
    重排列
    最多分成多少块
    后面第一个大于
    走格子
    硬币游戏
    还是01串
    戴德兰
    个人所得税
    最长高地
    执行Commit时Oracle做哪些工作
  • 原文地址:https://www.cnblogs.com/TheRoadToTheGold/p/6946123.html
Copyright © 2011-2022 走看看