题意:

      有一个车站,两个人想要在这个车站见面,第一个人会在t1到t2之间的任意一个时刻到(时间上任意一点概率一样),并且停留w时间,第二个人是s2到s2的时间段到,停留也是w,问两个人的见面概率是多少?

思路:

      这个应该算是个比较经典的问题了吧,感觉在那看到过,我们建立一个直角坐标系,t1<=x<=t2 ,s1<=y<=s2这样构成的这个矩形就是所有的概率区间,然后画一条x=y的直线,然后把这个直线沿着x=y方向想下和向上平移w得到一个区间,这个区间和句型重叠的部分就是见面的概率区间,用这个面积除以矩形的面积就是见面概率,求面积的时候我的方法比较笨,y=x+w,y=x-w这两条直线分别和四条线段求交点,然后在根据得到的四个交点的位置分布,枚举求出答案,我写的比较麻烦!

#include<stdio.h>

#include<string.h>

int main ()

{

   double t1 ,t2 ,s1 ,s2 ,w ,x ,y;

   double x1 ,x11 ,y1 ,y11;

   double x2 ,x22 ,y2 ,y22;

   int mark1[5] ,mark2[5];

   int t ,cas = 1;

   scanf("%d" ,&t);

   while(t--)

   {

      scanf("%lf %lf %lf %lf %lf" ,&t1 ,&t2 ,&s1 ,&s2 ,&w);

      int mk = 0; 

      memset(mark1 ,0 ,sizeof(mark1));

      memset(mark2 ,0 ,sizeof(mark2));

      // 1

      y = t1 + w;

      if(y >= s1)

      {

         if(y >= s2) y = s2;

         if(mk <= 2)

         if(mk == 0) x1 = t1 ,y1 = y;

         else x11 = t1 ,y11 = y;

         mark1[1] = 1;

         mk ++;

      }

       //4

      x = s1 - w;

      if(x >= t1)

      {

         mark1[4] = 1;

         if(x >= t2) x = t2;

         if(mk <= 2)

         if(mk == 0) x1 = x ,y1 = s1;

         else x11 = x ,y11 = s1;

         mk ++;

      }

      

      //3

      y = t2 + w;

      if(y <= s2)

      {

         mark1[3] = 1;

         if(y < s1) y = s1;

         if(mk <= 2)

         if(mk == 0) x1 = t2 ,y1 = y;

         else x11 = t2 ,y11 = y;

         mk ++;

      }

      //2

      x = s2 - w;

      if(x <= t2)

      {

         mark1[2] = 1;

         if(x < t1) x = t1;

         if(mk <= 2)

         if(mk == 0) x1 = x ,y1 = s2;

         else x11 = x ,y11 = s2;

         mk ++;

      }

     

      

      

      mk = 0; 

      // 1

      y = t1 - w;

      if(y >= s1)

      {

         mark2[1] = 1;

         if(y >= s2) y = s2;

         if(mk <= 2)

         if(mk == 0) x2 = t1 ,y2 = y;

         else x22 = t1 ,y22 = y;

         mk ++;

      }

      

      //4

      x = s1 + w;

      if(x >= t1)

      {

         mark2[4] = 1;

         if(x >= t2) x = t2;

         if(mk <= 2)

         if(mk == 0) x2 = x ,y2 = s1;

         else x22 = x ,y22 = s1;

         mk ++;

      }

      //3

      y = t2 - w;

      if(y <= s2)

      {

         mark2[3] = 1;

         if(y < s1) y = s1;

         if(mk <= 2)

         if(mk == 0) x2 = t2 ,y2 = y;

         else x22 = t2 ,y22 = y;

         mk ++;

      }

      //2

      x = s2 + w;

      if(x <= t2 )

      {

         mark2[2] = 1;

         if(x < t1) x = t1;

         if(mk <= 2)

         if(mk == 0) x2 = x ,y2 = s2;

         else x22 = x ,y22 = s2;

         mk ++;

      }

      

      

      if(x1 == x11 && y1 == y11 && x2 == x22 && y2 == y22 && x1 ==x2 && y1 == y2)

      {

         printf("Case #%d: 0.00000000" ,cas ++);

         continue;

      }

      double m1 ,m2;

      double m = (t2 - t1) * (s2 - s1);

      if(mark1[1] && mark1[2]) m1 = (s2 - y1) * (x11 - t1) / 2;

      else if(mark1[1] && mark1[3]) m1 = ((s2 - y1) + (s2 - y11)) * (t2 - t1) / 2;

      else if(mark1[4] && mark1[2]) m1 = ((x1 - t1) + (x11 - t1)) * (s2 - s1) / 2;

      else if(mark1[4] && mark1[3]) m1 = m -  (y11 - s1) * (t2 - x1) / 2;

      

      if(mark2[1] && mark2[2]) m2 =  m - (s2 - y2) * (x22 - t1) / 2;

      else if(mark2[1] && mark2[3]) m2 = m - ((s2 - y2) + (s2 - y22)) * (t2 - t1) / 2;

      else if(mark2[4] && mark2[2]) m2 = m - ((x2 - t1) + (x22 - t1)) * (s2 - s1) / 2;

      else if(mark2[4] && mark2[3]) m2 = (y22 - s1) * (t2 - x2) / 2;

      

      double Ans = (m - (m1 + m2)) / m;

      printf("Case #%d: %.8lf\n" ,cas ++ ,Ans);

      

   }

   return 0;

}

      

         

      

      

         

      

         

         

         

         

      

      

      

UVA11722(见面概率)的更多相关文章

  1. UVA 11722

    You are going from Dhaka to Chittagong by train and you came to know one of your old friends is goin ...

  2. UVA11722概率问题之线性规划

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

  3. uva11722 - Joining with Friend(几何概率)

    11722 - Joining with Friend You are going from Dhaka to Chittagong by train and you came to know one ...

  4. uva 11722 - Joining with Friend(概率)

    题目连接:uva 11722 - Joining with Friend 题目大意:你和朋友乘火车,而且都会路过A市.给定两人可能到达A市的时段,火车会停w.问说两人能够见面的概率. 解题思路:y = ...

  5. PHP常见面试题汇总(二)

    PHP常见面试题汇总(二)   //第51题:统计一维数组中所有值出现的次数?返回一个数组,其元素的键名是原数组的值;键值是该值在原数组中出现的次数 $array=array(4,5,1,2,3,1, ...

  6. LightOJ.1265.Island of Survival(概率)

    题目链接...我找不着了 \(Description\) 岛上有t只老虎,1个人,d只鹿.每天随机有两个动物见面 1.老虎和老虎碰面,两只老虎就会同归于尽: 2.老虎和人碰面或者和鹿碰面,老虎都会吃掉 ...

  7. ZOJ 3551 Bloodsucker <概率DP>

    题目:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3551 题意:开始有N-1个人和一个吸血鬼, 每天有两个生物见面,当人 ...

  8. Gym - 101987G Secret Code (概率+数学积分)

    题意:有A,B,C三个人要见面,每个人在[0,S]随机选择一个时间点作为见面时间,先到的那个人要等下一个人来了之后和他确认信息,然后马上就走. 例如,假如A先到,B其次,C最后到,那么A要等B到了之后 ...

  9. [bzoj2152][聪聪和可可] (点分治+概率)

    Description 聪聪和可可是兄弟俩,他们俩经常为了一些琐事打起来,例如家中只剩下最后一根冰棍而两人都想吃.两个人都想玩儿电脑(可是他们家只有一台电脑)……遇到这种问题,一般情况下石头剪刀布就好 ...

随机推荐

  1. 破败之王杀人戒bug原理剖析(从底层存储来解释)

    今儿看到了破败之王的bug,一级团杀了人变成了对面,然后送塔,戒指就变成了很夸张的层数. 视频如下: https://www.bilibili.com/video/BV1yr4y1A7Mo 一开始我也 ...

  2. 【Arduino学习笔记05】Arduino数字输入、输出和脉冲宽带调制 -- 小项目:彩色小台灯

    基本功能: 长按控制按钮开机,长按控制按钮关机(>3s) 通过三个调节按钮调节灯的颜色,每一个按钮分别对应R,G,B值 模式切换:短按控制按钮切换模式(长亮模式/闪烁模式) 元器件清单: Ard ...

  3. P4847 银河英雄传说V2 题解(Splay)

    题目链接 P4847 银河英雄传说V2 解题思路 我天哪!!!\(splay\)在\(rotate\)的时候先\(upd(y)\)再\(upd(x)\)!!以后不能再因为这个\(WA\)一晚上了!!! ...

  4. springboot 配置文件application

    application.properties # ----------------------------------------# 核心属性# --------------------------- ...

  5. 王兴:为什么中国的 ToB 企业都活得这么惨?

    本文节选自美团创始人王兴的内部讲话.在讲话中,王兴罕见地分享了他对全球和中国宏观经济的理解,谈了他对 TO B 业务的深度思考. 我们今天讲一下餐饮生态业务部,以及对我们整个公司在整个业务发展过程中的 ...

  6. Reverse 高校网络信息安全运维挑战赛

    Reverse 高校网络信息安全运维挑战赛 1 signed int sub_403CC0() 2 { 3 unsigned int v0; // eax 4 int key_lens; // eax ...

  7. Java 学习记录

    •Eclipse相关 Eclipse常用设置 解决 Eclipse 项目中有红色感叹号的详细方法(图文) JRE System Library [JavaSE-1.8](unbound) •Java ...

  8. LamPiao靶机work_through

    前言 oscp靶机系列的第二篇.只追求做出来的话,这靶机蛮简单的.但是为了提升难度,尽量避免使用msf--毕竟考试只准用一次嘛,自己写了个exp. 正文 主机发现 nmap -sP 192.168.2 ...

  9. 201871010109-胡欢欢-实验一-软件工程的准备(初识github及《现代软件工程-构建之法》)

    项目 内容 课程班级博客链接 2021年春软件工程课程班(2018级计算机科学与技术) 这个作业要求链接链接 实验一软件工程准备 我的课程学习目标 了解github的基本使用,学习markdown编辑 ...

  10. OO第四单元总结及学期总结

    目录 OO第四单元总结及学期总结 第四单元三次作业架构设计 第十三次作业 第十四次作业 第十五次作业 四个单元中架构设计及OO方法理解的演进 第一单元 第二单元 第三单元 第四单元 四个单元中测试理解 ...