uva 11722 Joining with Friend
2017-06-05 17:29
302 查看
https://vjudge.net/problem/UVA-11722
题意:你和朋友都要乘坐火车,并且都会途径A城市。你们很想会面,但是你们到达这个城市的准确时刻都无法确定。你会在时间区间[t1,t2]中的任意时刻以相同的概率密度到达。你的朋友则会在时间区间[s1,s2]的任意时刻以相同的概率密度到达。你们的火车都会在A城市停留w分钟。只有你们所在的火车都停在A城市的时候,才可能会面。你的任务是计算出现这种情况的概率。
计算阴影部分占矩形的比例就是答案
在计算阴影面积时,要分类讨论线与矩形左上、左右、下上、下右、不相交(包含矩形、不包含矩形)
两条直线同时讨论情况很多
两条直线其实分类的情况完全相同,所以可以用 上面直线下边的面积-下面直线下边的面积
题意:你和朋友都要乘坐火车,并且都会途径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\n",tt,ans/((t2-t1)*(s2-s1))); } }
相关文章推荐
- uva11722 - Joining with Friend(几何概率)
- uva 11722 - Joining with Friend(概率)
- UVa 11722 Joining with Friend (几何概率 + 分类讨论)
- uva 11722 - Joining with Friend(概率)
- Uva11722 Joining with Friend
- uva11722 Joining with Friend
- UVA 11722 Joining with Friend [连续概率]
- UVA 11722 Joining with Friend【概率】
- UVA 11722 Joining with Friend 图形面积+概率
- UVA 11722 - Joining with Friend(概率)
- UVa 11722 (概率 数形结合) Joining with Friend
- UVA - 11722 Joining with Friend 几何概率
- UVA - 11722 Joining with Friend (概率)
- UVa 11722 - Joining with Friend (概率 数形结合)
- [uva11722&&cogs1488]和朋友会面Joining with Friend
- UVa 10570 Meeting with Aliens
- UVALive 5059 C Playing With Stones
- UVa - 10570 - Meeting with Aliens
- UVA 12299 RMQ with Shifts
- UVA10673 - Play with Floor and Ceil