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 ;
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=;tt<=t;tt++)
{
scanf("%d%d%d%d%d",&s1,&s2,&t1,&t2,&w);
double ans=solve(w)-solve(-w);
printf("Case #%d: %.8lf\n",tt,ans/((t2-t1)*(s2-s1)));
}
}

最新文章

  1. hdu1532网络流
  2. apache 日志轮询 linux cronolog
  3. EF框架step by step(9)—Code First Fluent API
  4. 2016 - 1 - 20 runloop学习
  5. 小白日记3:kali渗透测试之被动信息收集(二)-dig、whios、dnsenum、fierce
  6. ### 学习《C++ Primer》- 6
  7. 把某个asp.net 控件 替换成 自定义的控件
  8. Jackson的Json转换
  9. JSP中的EL语言
  10. 201521123092《java程序设计》第十三周学习总结
  11. Django_cookie_session
  12. [Swift]LeetCode907. 子数组的最小值之和 | Sum of Subarray Minimums
  13. fisher线性判别
  14. VUE-007-通过路由 router.push 传递 query 参数(路由 name 识别,请求链接显示参数传递)
  15. python基础之IO编程
  16. Hibernate简答题
  17. 彻底理解mysql服务器的字符集转换问题
  18. iOS开发之蓝牙
  19. Java -- 新IO -- 目录
  20. 集成利用tesseract.exe进行ocr

热门文章

  1. 使用ssh公钥登陆
  2. 1014C程序语法树
  3. mysql &amp; vs2013
  4. 【bzoj2257】[Jsoi2009]瓶子和燃料 扩展裴蜀定理+STL-map
  5. (转)java web自定义分页标签
  6. 在虚拟机上安装linux系统
  7. 【HDU4336】Card Collector (动态规划,数学期望)
  8. BZOJ2216 [Poi2011]Lightning Conductor 【决策单调性dp】
  9. bzoj3306: 树(dfs序+倍增+线段树)
  10. centos上部署git